Asp.net core mvc .net core ef保存相关数据导致错误SqlException:无法在表中插入标识列的显式值

Asp.net core mvc .net core ef保存相关数据导致错误SqlException:无法在表中插入标识列的显式值,asp.net-core-mvc,asp.net-core-2.0,ef-core-2.0,Asp.net Core Mvc,Asp.net Core 2.0,Ef Core 2.0,下面,我尝试在我的web应用程序中执行相同的操作: var content = new Content() { IsActive = true, Link = new Link() { DateCreated = Dat

下面,我尝试在我的web应用程序中执行相同的操作:

                    var content = new Content()
                    {
                        IsActive = true,
                        Link = new Link()
                        {
                            DateCreated = DateTime.UtcNow,
                            LinkName = model.Name,
                            LinkDesc = model.Description,
                            LinkPath = model.LinkPath,
                            IsActive = true
                        }
                    };
                    _context.Contents.Add(content);
                    _context.SaveChanges();
这会引发一个错误:

SqlException:无法在中插入标识列的显式值 当IDENTITY_INSERT设置为OFF时,表“链接”

但如果我这样做,它会起作用:

 var content = new Content() {
   IsActive = true
 }
 _context.Contents.Add(content);
 _context.SaveChanges();

  var link = new Link()
  {
      DateCreated = DateTime.UtcNow,
      LinkName = model.Name,
      LinkDesc = model.Description,
      LinkPath = model.LinkPath,
      IsActive = true,
      ContentId = content.ContentId
  };

  _context.Links.Add(link);
  _context.SaveChanges();

  content.LinkId = link.LinkId;
  _context.SaveChanges();
这些是模型:

public class Content
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ContentId { get; set; }

        public int? LinkId { get; set; } = null;
        [ForeignKey("LinkId")]
        public virtual Link Link { get; set; }

        public DateTime DateCreated { get; set; } = DateTime.UtcNow;

        public bool IsActive { get; set; }

    }

public class Link
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int LinkId { get; set; }

        [MaxLength(300)]
        public string LinkDesc { get; set; }

        [MaxLength(50)]
        [Required]
        public string LinkName { get; set; }

        public DateTime DateCreated { get; set; } = DateTime.UtcNow;
        public bool IsActive { get; set; }

        [MaxLength(500)]
        public string LinkPath { get; set; }

        public int ContentId { get; set; }
        [ForeignKey("ContentId")]
        public virtual Content Content { get; set; }
    }

我遗漏了什么吗?为什么第一个代码会尝试将值插入到
LinkId

为什么在两个方向上都有外键?每个内容只能有一个链接,每个链接只能有一个内容吗?是的,我添加了第二个,试图找出为什么它不能正常工作。假设每个内容可以有多个链接,我将从内容类中删除LinkId和Link字段,并向内容类中添加IEnumerable,以便正确表示您的关系。模型正确后,查看是否仍然存在相同的问题。如果是1到1或0,则某些内容有一个链接,而有些内容没有。在这种情况下,内容应该有一个可为空的LinkId,就像链接导航属性一样,链接不应该有ContentId,但可以有一个IEnumerable导航属性