2012-04-12 81 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

它有一些東西需要與延遲加載和我試圖重新加載哪些是對象已經加載。不知道爲什麼它崩潰,但設法解決它的具體情況。