我正在使用ASP.Net MVC。我有两个类,一对多和多对多相关。
public class Image
{
public Image() { }
public long Id { get; set; }
// other properties are removed for clarity
public virtual IList<Branch> Branches { get; set; }
}
public class Branch
{
public Branch() { }
public long Id { get; set; }
// other properties are removed for clarity
public long? ImageId { get; set; }
public virtual Image Image { get; set; }
public virtual IList<Image> Images { get; set; }
}
分支可以有多个图像(Branch.Images
)。但我想分别存储他们的主图像(Branch.Image
)。我认为这可能对速度有所帮助。由于分支可能没有图像,因此该属性定义为可以为空。作为引用声明,这种定义应该在Branches表中定义一个外键,它确实如此。但问题是当正在删除作为分支主图像的图像时。它会导致此错误:
DELETE语句与REFERENCE约束冲突 “FK_Branches_Images_ImageId”。冲突发生在 数据库“数据库”,表“分支”,列“ImageId”。该 声明已被终止。
但它应该将外键设置为null,因为该分支没有主图像。
我是否应该使用Fluent API,否则模型定义会出现问题?
答案 0 :(得分:0)
自动设置为null仅在将子级也加载到上下文中时才起作用,而不仅仅是父实体。您需要先将孩子包括在父母中,然后再删除它。