当前位置: 首页 > 编程语言 > C#

领域逻辑与数据验证分享

时间:2023-04-10 12:19:47 C#

领域逻辑与数据验证忙着看MarkSeemann的.Net依赖注入。我很难解释确切的背景,所以如果你熟悉这本书,请只关心这个。我的问题与第2章第49页的两个产品类有关。一个在领域层,一个在数据访问层。解释了数据访问层中的Product类是由LinqtoEntity向导创建的。我正在使用LinqtoSQL,我可以用LingtoSQL属性装饰我的模型类,这样我就不必再上课了。例如[Table(Name="Customers")]publicclassCustomer{[Column(IsPrimaryKey=true)]publicstringCustomerID;[列]publicstringCity;但我觉得这是一个混合问题,它实际上使我的域层与LinqtoSQL数据访问层紧密耦合。你同意?假设我为域和数据访问层创建了两个“客户”类。假设城市是必填字段。保存时需要勾选这条规则。这应该在域层或数据访问层或两者都完成吗?谢谢,Darren当然,这会将您的领域层与DAL结合起来。更糟糕的是,您的域层实体将与数据库中的表具有相同的结构。如果表是相关的,那么这将不是域模型的最佳表示。我们所做的是让DAL中存在Linq-to-SQL实体,然后在DAL中有映射类,将L2S实体转换为域实体,反之亦然。这没关系,因为DAL实际上是您的ORM,它的部分工作就是进行此映射。我会说,如果需要City,那么作为一个业务规则,就是业务逻辑,属于业务逻辑层的业务规则。有一些验证包可以帮助解决这个问题。但我觉得这是一个混合问题,它实际上是将我的域层与LinqtoSQL数据访问层紧密耦合。你同意?是的,它会。实体框架(代码优先)和nhibernate都可以使用单独的映射类,这将使您的模型保持干净并且不依赖于OR/M。旁注:域模型不应具有属性的公共设置器(在DDD中)。因为它有效地将模型逻辑移到了模型之外。假设我为域和数据访问层创建了两个“客户”类。假设城市是必填字段。保存时需要勾选这条规则。这应该在域层或数据访问层或两者都完成吗?数据库实体应该只存在于存储库类中,因此没有必要对其进行验证。正在保存的域模型应该已经具有正确的状态。示例:以上就是C#学习教程分享的全部内容:领域逻辑和数据验证。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——publicclassArticleRepository{publicvoidSave(Articlearticle){//文章已经处于正确状态//(感谢没有公共设置器)vardbEntity=newArticleEntity();Mapper.Map(文章,dbEntity);_dbContext.Save(dbEntity);}}本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: