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

Raf*_*aeu 2 c# entity-framework-core asp.net-core

您能告诉我以下内容之间的区别吗:

  • 使用OnModelCreating内部的代码来定义具有关系和映射的具有EF Core属性的类(例如DataAnnotations VS)?
  • 使用dotnet ef迁移创建Migration类,将“ xyz” VS配置为添加到OnModelCreating中

我正在尝试制作一种“开发工作流程”,但是文档对此并不十分清楚。

我发现我应该:

  1. 创建您的第一个“数据库上下文”
  2. 创建一组代表我的模型的类
  3. 覆盖OnModelCreating以指定每个Model对象的映射策略
  4. 执行add migrationsef update多次我改变什么

这是使用Entity Framework Core的正确流程吗?

hya*_*kov 5

使用OnModelCreating内部的代码来定义具有关系和映射的具有EF Core属性的类(例如DataAnnotations VS)?

数据注释是“内联”的,但是您将实体与持久性逻辑混合在一起。在我看来,这是最好的地方。OnModelCreating使您可以使用“ Fluent API”,该API功能更强大,更灵活,但/和在某种程度上将持久性逻辑与实体分离。有时您会同时使用-数据注释和Fluent API。

使用dotnet ef迁移创建Migration类,将“ xyz” VS配置为添加到OnModelCreating中吗?

不知道我明白这一点。我看不到迁移的替代方案。

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

  1. 我写我的实体并为其添加数据注释
  2. 我生成一个迁移并从中获取SQL脚本,然后删除迁移代码
  3. 对数据库执行.SQL
  4. 运行代码
  5. 实体变更
  6. 生成新的迁移.SQL并将其存储为项目的一部分

基本上,当您想更新数据库以使其与新代码/更改代码兼容时,“迁移”是必需的。

OnModelCreating当您必须告诉EF实体如何映射到数据库时,这是必需的。您不应混淆这两件事。