实体框架核心OnModelCreating vs Migration,正确的开发工作流程

时间:2017-03-06 14:20:33

标签: c# asp.net-core entity-framework-core

请您解释一下以下内容之间的区别:

  • 使用 DataAnnotations VS使用 OnModelCreating 中的代码来装饰具有EF Core属性的类来定义关系和映射?
  • 使用dotnet创建迁移类ef迁移添加" xyz" VS将其配置为 OnModelCreating

我正在尝试制作一种“开发工作流程”#34;但是文档并不是很清楚。

我发现我应该:

  1. 创建您的第一个"数据库上下文"
  2. 创建一组代表我的模型的类
  3. 覆盖 OnModelCreating 以指定每个模型对象的映射策略
  4. 在我更改内容时执行add migrationsef update次数
  5. 这是使用Entity Framework Core的正确流程吗?

1 个答案:

答案 0 :(得分:4)

  

使用EF Core属性(如DataAnnotations VS)装饰一个类   使用OnModelCreating中的代码来定义关系和   映射?

数据注释是“内联”,但您可以将实体与持久性逻辑混合使用。在我看来,这是最佳选择。 OnModelCreating使您可以使用' Fluent API,它更强大,更灵活,但/并且将持久性逻辑与您的实体分离。有时你会混合使用 - 数据注释和Fluent API。

  

使用dotnet创建迁移类ef迁移添加" xyz" VS   将其配置为OnModelCreating?

不确定我明白这一点。我没有看到迁移的替代方案。

我使用EF(代码优先)的方式是:

  1. 我编写实体并向其添加数据注释
  2. 我生成一个迁移并从中获取SQL脚本,然后删除迁移代码
  3. 对数据库执行.SQL
  4. 运行代码
  5. 实体更改
  6. 生成新的迁移.SQL并将其存储为项目的一部分
  7. 基本上是一次迁移'当您想要更新数据库以与新的/更改的代码兼容时,是必要的。

    当你必须告诉EF实体如何映射到数据库时,

    OnModelCreating是必要的。你不应该混淆这两件事。