我正忙于阅读和享受Mark Seemann撰写的.Net中的依赖注入(inject)。
我很难解释确切的上下文,因此,如果您熟悉这本书,请仅打扰这个问题。
我的问题与第2页49中的两个Product类有关。Domain层中有一个,数据访问层中有一个。解释了数据访问层中的Product类是由Linq to Entity向导创建的。
我正在使用Linq to SQL,并且可以使用Ling到SQL属性来修饰我的模型类,这样我就不必再拥有第二个类了。例如。
[Table(Name="Customers")]
public class Customer
{
[Column(IsPrimaryKey=true)]
public string CustomerID;
[Column]
public string City;
}
但是,我觉得这令人担忧,这实际上会将我的域层与Linq to SQL数据访问层紧密耦合在一起。你同意吗?
假设我为域和数据访问层创建了两个“客户”类。假设“城市”是必填字段。保存时,需要检查此规则。应该在域层还是在数据访问层,或者在这两者中完成?
谢谢,达琳
最佳答案
的确,这会将您的域层耦合到DAL。更糟糕的是,您的域层实体将与数据库中的表具有相同的结构。如果这些表是关系表,那么那将不是域模型的最佳表示。
我们要做的是让Linq-to-SQL实体存在于DAL中,然后在DAL中具有映射类,将L2S实体转换为域实体,反之亦然。没关系,因为DAL确实是您的ORM,而其工作的一部分就是进行此映射。
我要说的是,如果需要City作为业务规则,那么这就是业务逻辑,并且属于业务逻辑层中的业务规则。那里有验证包可以帮助解决此问题。