entity-framework - EF5 Code First - 数据注释与 Fluent API

标签 entity-framework data-annotations fluent

我是 Entity Framework 新手,即将开始使用 EF5 Code First 的新 ASP.NET MVC 项目。

据我了解,您可以对域模型对象中的属性使用数据注释,也可以使用 Fluent API 来定义属性数据类型(创建对象时在数据库中)、大小、它们是否可为空等等。

是否有通用的推荐方法可供选择?

我看不出在使用数据注释时如何在数据库中创建该属性时指定该属性的数据类型和大小,而使用 Fluent API 看起来您可以执行以下操作:

Property(g => g.ModelName).HasColumnType("varchar");
Property(g => g.ModelName).HasMaxLength(100);
Property(g => g.ModelName).IsRequired();

使用数据注释时,默认情况下,它似乎对我的所有字符串属性使用 nvarchar(MAX)。

有没有办法使用数据注释来完成上述操作?它是否提供与 Fluent API 相同程度的“调整”,还是我应该单独保留域模型并将所有这些“调整”分开,以将每个域模型对象的 Fluent API 类分开?

最佳答案

我会推荐 Fluent API。数据注释是一个子集,例如不包括关系的级联删除。

此外,您可能会考虑使用持久性逻辑(例如不适当的数据库列名称)来污染您的模型。

关于entity-framework - EF5 Code First - 数据注释与 Fluent API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18055532/

相关文章:

c# - IDataErrorInfo 的实现,过度使用 if 语句

entity-framework - Entity Framework DefaultConnectionFactory 被忽略

c# - 实体模型中可以使用私有(private) setter 吗?

html - MVC 3 数据注释 : Not allow HTML

c# - 如何对自定义对象创建的属性使用 Blazor ValidationMessage

c# - 动态范围日期数据注释验证属性 c#

nhibernate - Fluent Nhibernate ClassMaps 和列顺序

c# - EF Core RC2 最终版本 : No database provider has been configured for this DbContext

javascript - 使用流利的 ffmpeg 覆盖视频时丢失音频

php - Laravel 中的 Id 命名约定