Bru*_*lin 4 .net c# entity-framework .net-core entity-framework-migrations
我制作了一张表格,将商店与 Table1 或 Table2(和其他信息)相关联
Id
IdStore_FK
IdTable1_FK
IdTable2_FK
SomeOtherFieldsThatDoesntMatterRightNow
Run Code Online (Sandbox Code Playgroud)
我创建了一个检查约束以确保它永远不会同时填充两个 FK,并且必须只填充其中一个(XOR):
ALTER TABLE TABLE0 ADD CHECK ((IdTable1_FK IS NULL AND IdTable2_FK IS NOT NULL) OR (IdTable1_FK IS NOT NULL AND IdTable2_FK IS NULL))
Run Code Online (Sandbox Code Playgroud)
但是我在和之后alter table
手动运行了它。我需要仅使用代码来制定这些限制,以便能够发送给我的经理。add-migration
update-database
我试图modelBuilder.Sql("ALTER TABLE XXX....")
在Up
特定迁移的方法中添加。我只能在add-migration
创建文件的之后将该行添加到迁移文件中。
每次启动后的种子查询检查约束是否存在,如果不存在则创建它对我来说似乎并不酷。此外,它只会在我运行代码时运行,而不是与迁移/更新数据库一起运行。
仅使用代码无法做到这一点。但是,您可以利用 EF 迁移过程来运行任意 SQL。您还可以在数据库初始化期间运行 sql,以防您需要从新数据库开始。
话虽如此,自定义验证属性可能仍然是一个好主意,以便您可以更早地捕获错误。
对不起,元答案,但这些是过去帮助过我的资源。
归档时间: |
|
查看次数: |
3872 次 |
最近记录: |