Я пытаюсь использовать EF4.1 в настройках, где у меня будет DAL (уровень доступа к данным), BLL (уровень бизнес-логики), а затем уровень представления (обычно веб-приложение ASP.NET или консольное приложение).
В настоящее время я делаю все свои проекты, используя LINQ to SQL, и у меня есть настройка, которая использует несколько слоев, как описано выше.
Хотя при рассмотрении EF все примеры просто используют один слой или, возможно,В двух слоях трудно найти полный пример, который использует DAL и BLL.
Самое близкое, что мне сейчас нужно, - это использовать генератор кода POCO для создания классов POCO, а затем повторнонайдите эти классы в моем проекте BLL - и .edmx и контекст объекта остаются в DAL.
Проблема с этим, хотя DAL нуждается в ссылке на BLL, чтобы он знал о классах POCO -в идеале ссылка должна быть наоборот.Если DAL имеет ссылку на BLL, у меня также не может быть ссылки из BLL на DAL - потому что у вас не может быть циклических ссылок, поэтому я не могу ничего делать с контекстом объекта, например, вызывать метод сохранения изменений из bll.
Во всяком случае, у меня возникли некоторые проблемы со всем этим.
Я подумываю сделать что-то по-другому (аналогично тому, что я делаю в настоящее время с LINQ to SQL), гдеобъекты сущности EF остаются в DAL, и я записываю свои собственные классы BLL, которые просто «возвращаются» к их счетным частям объекта DAL.Таким образом, DAL может иметь ссылку на BLL и BLL.
Извините, это длинный вопрос, но я ценю мысли людей, я действительно часами читал об EF, но изо всех сил пытался понять, как он может работать вмногослойный подход.