我在n层概念上挣扎。起初,我有这个概念,我的域实体将在我的3层共享(DAL,BLL,Service)。但最近被告知这是一个古老的概念,并没有真正遵循SOLID概念。而是被告知为每个图层创建和对象。N层对象参数
Service
ObjectService
Business
ObjectBus
DAL
Object
哪一个是服务依然依赖于业务,业务依赖于dal等。但我不确定如何传递我的对象或如何创建它们。
让我的数据层说我有一个person.cs具有以下属性
public class Person:Base
{
public string firstName { get; set; }
public string lastName { get; set; }
public string middleName { get; set; }
}
在我的业务对象,我应该像这样创建
Boolean CreatePerson(userrole r,string f, string l, string m);
的业务方法或者我应该做的像这样的东西
Boolean CreatePerson(PersonHandler pmo);
我在哪里有一个班PersonHandler
public class PersonHandler
{
public UserRole r { get; set; };
public Person p { get; set; };
}
在这种情况下,userrole只是业务层需要的额外属性。我喜欢为业务层创建一个对象,因为我可以更容易地更改与此对象关联的所有属性,但是我觉得我仍然需要访问域实体(Person),但我被告知这很糟糕。但是,如果我为每个对象创建一组属性,我只是觉得这是多余的。如果将来我在DAL换了我的人,那是不是意味着我必须改变上升的每一个参数?
这里的样本更多的在我的文件夹结构
的高清这是我DAL结构。
很明显,使用'Boolean CreatePerson(userrole r,string f,string l,string m)'这样的方法是个坏主意。使用DAL层clases作为BL中的输入参数应该不成问题。 – Vladimir
你怎么做你的数据访问? entity frameowrk,nhibernate,orm?你在做cqrs吗? – Fran
我正在使用实体框架 – Jseb