шаблон POCO структуры сущностей в вопросе проектирования n-ярусов - PullRequest
1 голос
/ 31 мая 2010

Привет все

Я пытался выполнить пошаговое руководство по шаблону POCO. И теперь у меня проблемы с использованием его в n-уровневом дизайне.

Следуя статье, я поместил свою модель edmx и сгенерированный шаблон context.tt в свой проект DAL и переместил сгенерированные классы сущностей model.tt в мой проект уровня бизнес-логики (BLL).

Делая это, я мог бы использовать эти объекты внутри моего BLL, не ссылаясь на DAL, я думаю, это идея PI; ничего не зная об источнике данных.

Теперь я хочу расширить сущности (внутри model.tt) для выполнения некоторых действий CUD в проекте BLL, поэтому я добавил новый частичный класс с тем же именем, что и сгенерированный из шаблона,

public partial class Company
{
    public static IEnumerable<Company> AllCompanies()
    {
        using(var context = new Entities()){

            var q = from p in context.Companies
                    select p;

            return q.ToList();
       }
    }
}

однако visual studio не позволит мне сделать это, и я думаю, что это произошло потому, что context.tt находится в проекте DAL, а проект BLL не может добавить ссылку на проект DAL, поскольку DAL уже ссылается на BLL.

Поэтому я попытался добавить этот класс в DAL, и он скомпилировался, но intelisense не будет отображать BLL.Company.AllCompanies () в моем методе веб-службы из моего проекта веб-сервиса, который имеет ссылку на мой проект BLL.

Что мне теперь делать? Я хочу добавить методы CUD к объектам, сгенерированным шаблоном, в моем проекте BLL и вызывать их в моих веб-службах из другого проекта.

Я искал этот ответ уже несколько дней, и мне действительно нужны некоторые руководства отсюда, пожалуйста.

Bryan

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Ммм, твоя архитектура слоя выглядит как тарелка спагетти. Во-первых, по моему мнению, ваши объекты POCO должны быть помещены в другую сборку, которая не имеет никакого отношения к какому-либо DAL, или зачем беспокоиться о POCO? Во-вторых, статический метод в частичном классе выглядит не очень хорошо, делает ваши объекты poco очень простыми и передает его логику репозиториям.

Посмотрите на это, и все будет кристально ясно:

http://thedatafarm.com/blog/data-access/agile-entity-framework-4-repository-part-1-model-and-poco-classes/

0 голосов
/ 22 июля 2010

Я не думаю, что DAL должен иметь ссылку на BLL. Я думаю, что это должно быть наоборот. BLL должен быть невежественным.

...