Вопрос

Я, наконец, охватываю, чтобы проверить последний релиз EF, и я бегу в некоторые проблемы с моим тестированием.

Итак, мой слой DAL удерживает мой файл .edmx, и я использую шаблон MS POCO, поэтому у меня также есть сгенерированные файлы и классы .tt.

У меня есть общий базовый класс в TestProject.dal, я создал, что эти классы получают. Т.е.

public class BaseEntity<T> {}
public class Customer : BaseEntity<Customer> {}
public class Product : BaseEntity<Product> {}

Тогда в моем PESTPROJECT.BLL слой у меня есть некоторые полученные классы, т.е.

public class TestProject.BLL.Customer : TestProject.DAL.Customer {}
public class TestProject.BLL.Product : TestProject.DAL.Product {}

Затем в моем UI слой я называю свой объект BLL.Customer. Я получаю ошибку, говорящую, что ссылка на объект DAL.Customer не добавляется и т. Д.

У меня есть ссылка на проект BLL из моего проекта UI и ссылку на DAL из моего проекта BLL.

Почему слой пользовательского интерфейса жалуется, что он знает о слое DAL, когда он не ссылается в этот проект?

Кроме того, как побочный вопрос, это похоже на «хороший» дизайн?

Спасибо всем! Госы

Это было полезно?

Решение

Craig верный - ваш интерфейс ссылается на типы объектов POCO. Но я уточню немного больше.

Если Вы находились в ситуации, когда ваш проект UI ссылается на монтажу BLL, и эта сборка ссылалась на монтажу DAL а также нет публично разоблачить любых членов из этого монтажа DAL, Тогда то, что вы говорите, будут правильными. Но это не то, что здесь происходит. Вы ссылаетесь на сборку BLL и типы в этой сборке непосредственно унаследовать от типов DAL и, следовательно, типы DAL являются публично видно вашему интерфейсу. Следовательно, компилятор (правильно) говорит вам, что вы должны ссылаться на монтаж DAL из вашего проекта UI.

Что касается вашего «хорошего дизайна» вопроса, что всегда зависит от контекста. Не зная ни одного из ваших контекстов, я бы не стеснялся создать такое дерево наследства. Какова работа ваших подкласс в сборке BLL?

Другие советы

Ваш UI делает Ссылка на типы объектов Poco - через параметр универсального типа на BaseEntity.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top