C# 无需多个并行对象模型的MVC/EF系统设计
我正在设计一个相当大的系统来管理数据存储库,并通过各种媒体向用户提供数据。为了便于讨论,让我们假设它是一个大的小部件和订单目录。我发现这个设计有一点不令人满意,那就是我发现自己在系统的不同部分有很多并行但不同的对象模型,还有很多代码来管理和相互转换它们 更具体地说,到目前为止,我们至少有以下几点:C# 无需多个并行对象模型的MVC/EF系统设计,c#,asp.net-mvc,entity-framework,oop,model,C#,Asp.net Mvc,Entity Framework,Oop,Model,我正在设计一个相当大的系统来管理数据存储库,并通过各种媒体向用户提供数据。为了便于讨论,让我们假设它是一个大的小部件和订单目录。我发现这个设计有一点不令人满意,那就是我发现自己在系统的不同部分有很多并行但不同的对象模型,还有很多代码来管理和相互转换它们 更具体地说,到目前为止,我们至少有以下几点: 实体框架域模型。这是所有真相的来源,以及存储在数据库中的内容。这里的小部件了解小部件的一切。虽然它是一个代码优先的POCO模型,但EF确实对需要定义哪些属性才能使模型正常工作施加了某些约束。(在我看来
小部件
了解小部件的一切。虽然它是一个代码优先的POCO模型,但EF确实对需要定义哪些属性才能使模型正常工作施加了某些约束。(在我看来,试图省略外键ID只会导致痛苦。)小部件
或我们的零件订单公开的数据集不会100%匹配小部件类,并调整翻译代码。概念上不难,但繁琐且容易出错
即使我们对使用与呈现视图和管理序列化相关的属性来装饰域模型没有审美上的异议,一个实体通常有多个视图集,或者多个API,因此没有一组编码指令
作为一个天性要求系统化和简化事物的人,坦率地说,这一切都让我感到厌烦。闻起来很难闻。我无法逃避这样一种感觉:我肯定错过了什么,必须有更好/更干净的方法来处理这件事
有什么样的策略和工具可以缓解(或自动化?)这种蔓延?还是这种重复不可避免?
我是否在以这种系统组合的方式与框架抗争?我认为总体而言,拥有独立的视图模型和DTO是一个好主意。他们每个人都有各自的责任。域对象与各种模型和DTO之间的映射可能是一个真正的难题,因此我建议使用AutoMapper之类的工具来处理这个问题