Off*_*'er 1 sql-server entity-framework entity-framework-core ef-core-2.0
我想知道在优先使用 EF Core 数据库时是否有处理迁移的标准方法。
每次我对数据库进行更改时,我都会在 CLI 中运行它:
dotnet ef dbcontext scaffold "Data Source=(local);Initial Catalog=myCatalog;Trusted_Connection=true;" Microsoft.EntityFrameworkCore.SqlServer -o Models -f
Run Code Online (Sandbox Code Playgroud)
它的问题覆盖了我在其他实体和 dbcontext 中所做的每一个更改,例如,我Id为每个实体都有一个接口,当我搭建脚手架时,我以后需要再次将其添加到实体中,是否可以将项目与数据库或者只是特定的实体?
另一个问题是,我最近不得不DeleteBehavior将实体的默认值从更改为DeleteBehavior.ClientSetNull,DeleteBehavior.Cascade所以现在每次使用脚手架方法时,我都需要手动更改OnModelCreating方法中的100 多个实体。
在 .Net Core 中,您并没有真正拥有数据库优先。所以这意味着 scaffold 命令只是为了让你在一个代码优先的项目中启动并运行你有一个现有数据库的项目。
这对您来说意味着您必须决定要在何处进行更改:
a) 数据库,或
b) 数据访问项目
这些选项中的任何一个都有效,但您必须选择一个并坚持下去。
如果您在数据库中进行更改,则必须更改所有表并向其中添加 ID 字段,然后再次运行 Scaffold 命令以更新您的模型。
如果您要对 DA 项目中的实体进行更改,则每次更改大量内容时都必须添加 EF Core Migration。
在这两种情况下,您都希望通过一堆 SQL 脚本或让应用程序在启动时执行数据库迁移,将数据库更新作为部署的一部分。
但是你不应该做的是试图改变这两个地方的事情。这就是你如何打破部署。
| 归档时间: |
|
| 查看次数: |
2038 次 |
| 最近记录: |