0

我有一个现有的数据库和.NET项目,我最近刚刚从RC1升级到RTM。由于开关,我必须创建一个new initial migration由于表名称的一些问题。我希望所有的FK限制都是删除级联,这应该是默认行为。EF迁移不会更新数据库中删除约束条件下的FK(新初始迁移)

如果我看看我的迁移文件,所有的东西都是“onDelete:ReferentialAction.Cascade”,但是这并不反映在我的postgresql数据库中,其中一切都是“ON DELETE NO ACTION”。

我发现的一个小小突破是,如果我使用流畅的API来执行.OnDelete(DeleteBehaviour.Cascade)并尝试执行另一次迁移,它不起作用。创建的迁移没有变化。但是,如果我尝试执行.OnDelete(DeleteBehaviour.SetNull或其他任何操作),然后再进行另一次迁移,它将成功生成具有适当更改的适当迁移。这让我想到EF在某种程度上已经认为数据库具有级联的一切,实际上它不是,可能是我在创建新的初始迁移时做错了什么?

我该如何解决这个问题,使所有的外键在删除级联?最好不用为我的项目中的每个实体编写流利的api语句

回答

0

改为使用this answer代替重新创建初始迁移。我尝试保留以前的数据库之前尝试的方法,而这个方法删除并重新创建。