关闭。这个问题是 opinion-based 。它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文来回答。
7年前关闭。
Improve this question
使用 Entity Framework code-first 创建数据库时,可以从代码中提取很多数据库模型。 Fluent API 和/或属性可用于微调模型。
与数据注释相比,Fluent Api 的优缺点是什么?换句话说:即使在某些情况下两种方法都可以使用,在什么情况下应该一种方法优于另一种方法?
最佳答案
您可以使用 DataAnnotations 配置的所有内容也可以使用 Fluent API。反过来就不对了。因此,从配置选项和灵活性的角度来看,Fluent API“更好”。
配置示例(当然不是完整列表)在 Fluent API 中是可能的,但在 DataAnnotations 中不可用(据我所知):
.WillCascadeOnDelete(false)
.Map(conf => conf.MapKey("MyForeignKeyID"))
.WithMany(...)
WithOptional(...)
WithRequiredDependent(...)
WithRequiredPrincipal(...)
.Map<TDerived>(Action<EntityMappingConfiguration<TDerived>> ...)
编辑:Microsoft 将 Fluent API 视为“高级功能”(引自 here):
但在我看来,您很快就会达到 DataAnnotations 的局限性(可能除了极其简单的对象模型)。如果您不能再使用 DataAnnotations 微调您的模型,您最后的选择是遵循默认映射约定(通过根据这些规则命名您的属性)。目前您不能覆盖约定(只能禁用它们;MS 宣布在 future 的 EF 版本中为约定提供配置选项)。但是,如果您不想在定义对象模型时受到映射约定的强制,那么您唯一的选择就是 Fluent API。
学习 Fluent API 几乎是必须的,恕我直言,DataAnnotations 对于简单的应用程序来说是一个不错的选择。
关于entity-framework - Entity Framework Code First - Fluent Api vs 数据注解的优缺点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5354900/