【发布时间】:2014-10-27 18:46:39
【问题描述】:
我有两个类,其中一个拥有其他的可空 ID 属性(作为外键)和虚拟导航属性。 当我删除我的实体时,我希望从作为外键保存的其他表中删除它的 ID。它没有发生,我得到错误:
"DELETE 语句与 REFERENCE 约束冲突 FK_MyDb.ArtWorks_MyDb.ImageFiles_ImgId。冲突 发生在数据库 MyDatabase ,表 MyDb.ArtWorks 中, “ImgId”列。声明已终止。”
这是持有外键的实体:
public class ArtWork : EntityBase
{
public int ID { get; set; }
public int? ImgId { get; set; }
public virtual ImageFile Img { get; set; }
}
这是我删除错误时发生的实体。
public class ImageFile
{
public int ID { get; set; }
}
据我所见,迁移文件已正确创建:
CreateTable(
"MyDb.ArtWorks",
c => new
{
ID = c.Int(nullable: false, identity: true),
ImgId = c.Int()
})
.PrimaryKey(t => t.ID)
.ForeignKey("MyDb.ImageFiles", t => t.ImgId)
.Index(t => t.ImgId);
另一个:
CreateTable(
"MyDb.ImageFiles",
c => new
{
ID = c.Int(nullable: false, identity: true)
})
.PrimaryKey(t => t.ID);
为了简短起见,我已经删除了这里不相关的属性。
我尝试了几个流畅的 api 定义,没有一个改变这种情况。 这些定义有什么问题?
谢谢。
【问题讨论】:
标签: c# entity-framework ef-code-first entity-framework-6