【问题标题】:EF code first: InvalidOperationException The multiplicity constraint is violatedEF 代码优先: InvalidOperationException 违反了多重性约束
【发布时间】:2012-04-12 08:39:11
【问题描述】:

当我尝试从我的存储库加载我的所有 CssFile 时,我得到一个多重性错误。在调试当前存在的对象时,一切似乎都很好。我尝试了 Include() 页面,但发生了同样的错误。

    public CssFile FindByPage(Page page)
    {
        return cssFiles.Where(f => f.PageId == page.Id).Single();
    }

违反了多重性约束。关系的作用 Page_CssFile_Target Paycento_Models.DAL.Page_CssFile,多重性 1 或 0 .. 1.

 public class Page
    {
        [Key()]
        public int Id { get; set; }
        [ForeignKey("CssFile")]
        public int CssFileId { get; set; }
        public virtual CssFile CssFile { get; set; }
     }

  public class CssFile
    {
        public string FileName { get; set; }
         [Key()]
        [ForeignKey("Page")]
        public int PageId { get; set; }
        public virtual Page Page { get; set; }
      }

【问题讨论】:

    标签: asp.net entity-framework ef-code-first code-first


    【解决方案1】:

    我认为代码应该是

    public class Page
    {
        [Key()]
        public int Id { get; set; }
        //[ForeignKey("CssFile")]
        //public int CssFileId { get; set; }
        public virtual CssFile CssFile { get; set; }
     }
    
    public class CssFile
    {
        [Key()]
        public int Id { get; set; }
        public string FileName { get; set; }
    
        [Required]
        [ForeignKey("Id")]
        public virtual Page Page { get; set; }
      }
    

    CssFile 中不需要“PageId”,因为关系是一对一的,并且主键将被共享。

    【讨论】:

      【解决方案2】:

      这与延迟加载有关,我试图重新加载已经加载的对象。虽然不知道它崩溃的具体原因,但设法修复它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-30
        相关资源
        最近更新 更多