我是一名新的开发人员,我从未在大型企业公司工作,所以我对多层应用程序中的命名约定有疑问。我有一个带有EF数据层的WPF / MVVM应用程序。我也想调整DDD原则。
所以,我会说同一个班级的三个模特。我有"模特"在MVVM中,我在EF中有一个实体/ dto(我不知道?),我在DDD中有域模型/ POCO。我必须创建所有这3个类来分离关注点(也许我可以将MVVM模型与POCO合并。我的意思是,POCO在MVVM中是有点模型)。我该如何命名?
我们说我有人POCO。应该是"人"或者" PersonDto"在EF?一般惯例是什么?我已经遇到了两种方式w / wo Dto postfix,所以我很困惑。
答案 0 :(得分:5)
我通常为DTO和ReadModels / ViewModels添加后缀,但不包括域对象。
没有严格的规则,这是个人(或团队)偏好的问题。有些人喜欢让命名空间代替这个技巧,但我发现它不太明确。
编辑:顺便说一下,我not a huge fan有一个单独的“持久模型”(我not the only one)。在任何情况下,我都不会在该层 DTO 中调用对象。
答案 1 :(得分:4)
DTO:例如:PersonDto
DTO是一个定义数据如何通过数据发送的对象 网络
POCO :例如:Person
实体框架使您可以一起使用自定义数据类 使用您的数据模型而不对数据进行任何修改 课本身。这意味着你可以使用"普通的" CLR 对象(POCO),例如现有域对象,与您的数据模型。 这些POCO数据类(也称为持久性无知对象), 它们映射到数据模型中定义的实体,支持 大多数相同的查询,插入,更新和删除行为作为实体 实体数据模型工具生成的类型。
希望这对你有所帮助。
答案 2 :(得分:2)
我认为重要的是记住一个人不是一个人。你想要分开它们的原因是因为它们可能会做很多不同的事情。
例如我可以拥有
人员数据库类/对象
(其中一部分)映射到学生域对象
然后前端为学生发送一个AddressChange更新。
当然你也可以拥有Person,PersonDTO和PersonDB,甚至还有PersonVM(比如你在前端使用javascript类型)。要记住的是,你要将它们分开,因为它们是完全不同的"。如果你强迫它们总是完全相同,那么就没有理由将它们分开。
答案 3 :(得分:0)
答案 4 :(得分:0)
我也想调整DDD原则。
然后绝对必须的是,域模型中使用的名称应与域专家的普遍使用的语言相匹配。