2012-04-12 28 views
0

私のリポジトリからすべてのCssFileをロードしようとすると、多重度エラーが発生します。現在の既存のオブジェクトをデバッグするときは、すべてが正常であるようです。私はページをインクルードしようとしましたが、同じエラーが発生しました。EFコードfirst: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

私は関係が1対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の「ページID」の必要はありませんされるべきだと思います。

0

これは、レイジーローディングとは何かを持っていたし、私がしたオブジェクトを再ロードしようとしていましたすでにロードされています。なぜそれが墜落したのかわからないが、それを修正することができた。

関連する問題