Entity Framework Code First Fluent Api VS Data Annotations

2019/09/05

65

EF Code First 可以使用两种方式对数据库映射做调整,分别是 Fluent ApiData Annotations,这两种方式“似乎”都可以达到想要的效果,但哪种方式更好呢?它们之间有什么区别呢?

“似乎”二字在上文中加上了引号,因为任何使用 Data Annotations 能做到的 Fluent Api 都能做到,反之则不然,从配置选项灵活性的角度来看,Fluent Api更好。

以下示例中可以在Fluent Api中使用但不能在Data Annotations中使用(据我所知)。

关闭级联删除

`.WillCascadeOnDelete(false)`

在对象模型中没有暴露Key时,在数据库中指定外键列名

.Map(conf => conf.MapKey("MyForeignKeyID"))

细粒度调整关系,特别是在对象模型中只显示关联的一侧的所有情况下

WithMany(...)
WithOptional(...)
WithRequiredDependent(...)
WithRequiredPrincipal(...)

微软将Fluent Api视为更“高级功能”来自这里

Fluent Api 被认为是更高级的功能,我们建议使用 Data Annotations,除非您要用高级功能

我也在网上搜索了相关资料,一些观点如下:

评论