EF 4.1 Mapper 类的使用

Posted

技术标签:

【中文标题】EF 4.1 Mapper 类的使用【英文标题】:Usage of EF 4.1 Mapper classes 【发布时间】:2012-09-22 12:12:39 【问题描述】:

我正在使用EF Power Tools 从已经存在的数据库中生成 POCO 类。 它生成一个类和一个映射器类,例如: 类人 类 PersonMapper 由于我首先使用反向代码,我真的需要映射器类吗? 我需要数据库表名和列名,它们是在 Mapper 类中生成的。 我应该将它们作为属性移动到 POCO 类吗?

【问题讨论】:

【参考方案1】:

EF Power Tools 使用 fluent api 将您的类/属性映射到表/列。如果您的所有类/属性都遵守 EF 约定(您可以通过遵循 Ladislav 的回答 here 了解有关约定的更多信息,那么您既不需要属性也不需要映射器类。但通常,您有一些不遵循约定的映射。

就个人而言,我认为使用 fluent api 是一种更清洁的方式,因为它不会影响你的 poco 类(不需要属性),一旦你掌握了它,用 fluent api 编写比属性更容易(至少对我来说。特别是在多对多或一对多关系中)。

最棒的是 EF Power Tools 可以为您完成这一切。那么为什么还要麻烦将其更改为属性或删除它们呢?

【讨论】:

【参考方案2】:

我正在寻找属性而不是流畅的 API 的原因是我已经有很多代码和项目使用一个类作为模型来映射对象并进行验证。

如果我想使用流畅的 API,我必须更改大量代码以使用一个类并使用另一个类进行验证。

希望我找到了Rowan Miller 的解决方案。

我可以先使用指南将 [Table] 和 [Column] 标签移动到模型,然后进行更多修改以移动 [Required]、[RowVersion]、[MinLength] 和 [MaxLength] 属性并摆脱 Map 类.

如果有人只想使用属性而不是流畅的 API,我做了以下修改: download

我省略了一些属性和映射,因为我不需要它们。也许需要一些格式。它没有完全测试! 我会做更多的工作,稍后替换文件。

【讨论】:

以上是关于EF 4.1 Mapper 类的使用的主要内容,如果未能解决你的问题,请参考以下文章

使用EF 4.1的DbContext的方法大全

使用 EF 4.1 部署数据库更改

EF 4.1 中使用 Code First 的 ComplexType 集合属性

EF 4.1 Code First - 我应该使用啥模式?

EF 4.1:使用 Fluent 映射从 Code First 中查找关键属性类型

如何使用 Code-First EF 4.1 从数据库中删除多个项目