Asp. Net с EF лучшей структурой проекта - PullRequest
0 голосов
/ 12 января 2020

При создании проекта ASP. Net MVC с базой данных я могу создать библиотеку классов DAL в начале, где будут классы моделей и доступ к базе данных, а затем добавить эту библиотеку в веб-проект? Лучше ли писать сущности в веб-проекте в папке Models? Я хочу сначала создать код EF

1 Ответ

0 голосов
/ 13 января 2020

Я помещаю свои сущности, DbContext (s) и классы репозитория в отдельную сборку (домен) и ссылаюсь на нее из моих веб-приложений. Если это было достаточно маленькое приложение, то папка «Домен» в веб-приложении, безусловно, достаточно разделена. Это строго ради организации.

Что я не рекомендую, так это пытаться извлечь все из абстракций от Entity Framework. Это включает в себя большое количество относительно сложного кода или жертвует производительностью и возможностями, которые EF может предоставить вашему проекту.

Например, в моем случае и веб-проект, и сборка домена будут содержать ссылки на EF. Это потому, что мои классы репозитория возвращают IQueryable<TEntity> в своих методах, и мой контроллер также отвечает за единицу работы, которая будет связывать DbContext. Чтобы использовать это, веб-проекту потребуется ссылка на EF. Я видел многочисленные попытки абстрагировать EF так, чтобы веб-проекты не нуждались в ссылке на Entity Framework. ИМХО, это огромная трата усилий на сложный код или жертвы настолько, что EF может сделать для проекта. Например, вы можете ввести сложные параметры, такие как Func<Expression<T>>, чтобы выполнить фильтрацию, а затем вам также нужно беспокоиться о сортировке выражений, разбивке на страницы, быстрой загрузке и т. Д. c. Или вы покончили с гибкостью и производительностью возможности сокращать EF-запросы, основываясь только на том, что нужно обстоятельствам, благодаря тому, что ваши классы сборки домена (службы или репозитории) возвращают DTO или отдельные объекты. Это приводит к большому количеству шаблонного кода и / или значительным ошибкам в производительности.

Короче говоря, при рассмотрении вопроса о том, разбивать ли функциональность на отдельную сборку или нет, важно взглянуть на причины нежелания сделать это. В целом, стремление к простоте - лучший совет, который я могу дать.

...