EF6 - 代码优先 - 是否需要属性映射?

时间:2013-05-21 09:27:06

标签: entity-framework entity-framework-6

我一直在阅读有关实体框架的代码优先方法。不幸的是,我找不到比EF4更多的文档。但是我读过的文档(scott gu在EF4上的博客)表明我不需要映射。

所以我使用EF6 Power Tools从现有数据库生成代码文件,这会生成我的所有模型类和映射文件夹。我自动查看了那些使用Fluent API的映射文件(我认为这是正确的)并描述了有关表的详细信息。

现在阅读这个有意义,它可能不会知道主键,必需属性,关系,但我没有得到的是博客文章中的属性到列映射这些不是必需的,所以我为什么需要他们?

如果列名不能在代码中表示但我的命名约定不允许这样做,我可以理解需要它们。

我提出问题的主要原因是可维护性问题我宁愿只在一个地方拥有特定属性的代码,这些行this.Property(t => t.ID).HasColumnName("ID");对我来说似乎是多余的。

任何有关EF6代码第一种方法的任何有用链接的人都会受到赞赏,谷歌也会失败:)

2 个答案:

答案 0 :(得分:1)

EF使用惯例做了很多。一旦你了解并熟悉约定,你就可以宣布课程和事情。

Code first conventions

答案 1 :(得分:1)

如果您对默认列名称等满意,则当然不需要属性映射。您可能需要它们来设置复合主键中列的顺序,或者指定属性包含数据库生成的值(如标识/自动增量列),但即使这样,您也可以将列名保留在其中并坚持使用默认值。

列映射确实有一些用途,但我不确定它们是否与您的情况相关:

  • 您可以将实体映射到现有数据库,而不必模仿列名,这可能不遵循标准的.NET命名约定。

  • 同样,您可以在代码中与数据库中遵循不同的命名约定。例如,在我工作的地方,数据库列通常应该是camelCase,而不是PascalCase。

  • 它们允许您以后更改属性的名称,而无需重新创建/迁移数据库。

如果这些都不适用于你,那么,如果没有它们,我认为你可能会很好。