[英]Duplicating POCO code in different layers with code-first migrations
我对使用实体框架感兴趣-使用新数据库进行代码优先迁移,并且我对在数据和业务层中复制POCO代码有一些疑问/问题。
这个想法是要有一个包含我的POCO实体的数据访问层,所有这些实体都装饰有数据库模式类型的项目,例如字符串长度,与外键相关的东西,这些东西开箱即用,等等。 该层还将充当存储库,该存储库将返回标量值,实体,聚合和IEnumerable。
在其之上的是业务层,它将处理与存储库的对话,以及一堆业务逻辑。
最顶层是表示层。 该层与业务层进行通信,并且对数据层一无所知–它只了解视图模型。 我将仅使用视图模型在这一层上实现MVC模式。
我遇到的问题与我在视图模型和数据模型之间的映射位置有关。 如果我在表示层中定义视图模型,则业务层将不知道它们的存在。
根据项目的范围,我通常使用以下两种方法之一:
1)具有一组与所有层分开的域模型,然后让所有层引用它们。 优点:图层仍然是独立的,没有模型重复,不需要映射图层模型。 缺点:域模型的更改会影响所有层,例如,数据库更改可能会破坏显示
2)每层都有模型。 业务层将其自身的模型映射到数据层的模型,表示层将其模型映射到业务层的模型优点:每一层都做一件事,基础模型中的更改不传播到层上缺点:可能重复模型并且映射需要维护
第一种方法最适合较小的应用程序和“直接更新”方案,第二种方法在具有多个移动组件的大型项目中效果更好。
PS“在业务层中定义视图模型”绝对是不行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.