我正在使用EF Power Tools从已经存在的数据库中生成 POCO 类。它生成一个类和一个映射器类,例如: class Person class PersonMapper 由于我是先使用反向代码,我真的需要映射器类吗?我需要数据库表名和列名,它们是在 Mapper 类中生成的。我应该将它们作为属性移动到 POCO 类吗?
2 回答
我正在寻找属性而不是流畅的 API 的原因是我已经有很多代码和项目使用一个类作为模型来映射对象并进行验证。
如果我想使用流畅的 API,我必须更改大量代码以使用一个类并使用另一个类进行验证。
希望我找到了Rowan Miller的解决方案。
我可以先使用指南将 [Table] 和 [Column] 标签移动到模型,然后进行更多修改以移动 [Required]、[RowVersion]、[MinLength] 和 [MaxLength] 属性并摆脱 Map 类。
如果有人只想使用属性而不是流畅的 API,以下是我所做的修改: 下载
我省略了一些属性和映射,因为我不需要它们。也许需要一些格式。它没有完全测试!我会做更多的工作并稍后替换文件。
EF Power Tools使用 fluent api 将您的类/属性映射到表/列。如果您的所有类/属性都遵守 EF 约定(您可以通过遵循 Ladislav 的答案在这里找到更多关于约定的信息,那么您既不需要属性也不需要映射器类。但通常,您有一些不遵循约定的映射。
就个人而言,我认为使用 fluent api 是一种更清洁的方式,因为它不会影响你的 poco 类(不需要属性),一旦你掌握了它,用 fluent api 编写比属性更容易(至少对我来说。特别是在许多对多或一对多的关系)。
最棒的是 EF Power Tools 为您完成这一切。那么为什么要麻烦将其更改为属性或删除它们呢?