将DTO
或Entity
附加到班级名称是否有任何偏好?
这有什么标准吗?
ORM(EntityFramework)使用1个类,而另一个类用于序列化。
这样做的原因是所有字段都没有重复,因为EntityFramework是DTO类的包装器(大多数但不是所有属性)。
DTO类位于共享库中,并与EF分离。
E.g。以下哪种是最常见/标准的方法?
// 1.
MyNamespace.Entities.MyClass
MyNamespace.Models .MyClassDto
// 2.
MyNamespace.Entities.MyClassEntity
MyNamespace.Models .MyClass
// 3.
MyNamespace.Entities.MyClassEntity
MyNamespace.Models .MyClassDto
答案 0 :(得分:1)
根据我的个人经验,你的第三个例子是我曾经使用过的唯一一个实例,它是我要争论的那个,因为你正在使用的对象的意图总是很清楚,而另外两个只是变得清晰当一起看两个物体时。
只要您的团队达成协议,任何可以使用的协议都可以。
答案 1 :(得分:1)
在我看来,您通常不希望将实现细节放入类名中,原因与您不想使用匈牙利表示法的原因类似。
如果有一些代码需要使用这两种类型并区分它们,另一种选择是使用这样的语句包含别名:
using entities = MyNamespace.Entities;
using dto = MyNamespace.Models;
//in code
var myClassEntity = new entities.MyClass();
var myClassDto = new dto.MyClass();
//work with both
我的假设是需要使用这两种类型的代码仅限于隔离库,而客户端代码通常适用于一种,而不是两种类型。