[英]Foreign key constraint exception in basic table design
我使用的是Entity Framework Core,并且具有简单的5表设计,但是出现错误,无法弄清原因。 我想念什么?
例外:
在表'GraphicItems'上引入FOREIGN KEY约束'FK_GraphicItems_GraphicUploadTemplateItems_GraphicUploadTemplateItemId'可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
基础:
public abstract class Base
{
public int Id { get; set; }
public DateTime DateCreated { get; set; } = DateTime.Now;
}
客户:
public class Client : Base
{
public Guid Key { get; set; }
public string Name { get; set; }
}
图形:
public class Graphic : Base
{
public int ClientId { get; set; }
public virtual Client Client { get; set; }
public ICollection<GraphicItem> Items { get; set; } = new HashSet<GraphicItem>();
public ICollection<Tag> Tags { get; set; } = new HashSet<Tag>();
}
GraphicItem :( 属性 GraphicUploadTemplateId 导致异常)
public class GraphicItem : Base
{
public int GraphicId { get; set; }
public virtual Graphic Graphic { get; set; }
public int GraphicUploadTemplateItemId { get; set; }
public virtual GraphicUploadTemplateItem UploadTemplateItem { get; set; }
}
GraphicUploadTemplate:
public class GraphicUploadTemplate : Base
{
public int ClientId { get; set; }
public virtual Client client { get; set; }
public ICollection<GraphicUploadTemplateItem> Items { get; set; }
}
GraphicUploadTemplateItem:
public class GraphicUploadTemplateItem : Base
{
public int GraphicUploadTemplateId { get; set; }
public virtual GraphicUploadTemplate UploadTemplate { get; set; }
}
我已经通过GraphicItem.UploadTemplateItem.Id链接到相应的GraphicUploadTemplateItem,我认为这会引起循环引用。
通过将属性类型设置为可为空来解决此问题
public class GraphicItem : Base
{
public int GraphicId { get; set; }
public virtual Graphic Graphic { get; set; }
public int? GraphicUploadTemplateItemId { get; set; }
public virtual GraphicUploadTemplateItem UploadTemplate { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.