1

我一直在阅读使用实体框架的代码优先方法。不幸的是,我找不到与 EF4 相关的更多文档。但是我读过的文档(scott gu's blog on EF4)表明我不需要映射。

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

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

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

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

任何在 EF6 代码优先方法上有任何有用链接的人都将不胜感激,谷歌也失败了:)

4

2 回答 2

1

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

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

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

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

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

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

于 2013-05-21T17:48:22.050 回答
1

EF 使用约定做了很多事情。一旦您了解并习惯了约定,您就可以声明类和事情。

代码优先约定

于 2013-05-21T11:52:14.590 回答