2012-04-12 69 views
0

当我尝试从我的存储库加载所有CssFile时,出现多重性错误。调试当前的现有对象时,一切似乎都很好。我尝试过Include()页面,但发生了相同的错误。EF代码优先:InvalidOperationException违反多重性约束

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; } 
     } 

回答

0

我认为代码应该是

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”,因为关系是一个-to-one和主键将被共享。

0

它有一些东西需要与延迟加载和我试图重新加载哪些是对象已经加载。不知道为什么它崩溃,但设法解决它的具体情况。