0

私は、SellinRequest、MortgageAndRent、およびAlbumという名前の3つのエンティティを持っています。 SellinRequestとMortgageAndRentのそれぞれにアルバムがあるかもしれません。2つの1対1の関係をマップする方法

public class SellingRequest 
{ 
    public int Id { get; set; } 
    public Album Album { get; set; } 
} 

public class MortgageAndRent 
{ 
    public int Id { get; set; } 
    public Album Album { get; set; } 
} 

public class Album 
{ 
    public int Id { get; set; } 
    public SellingRequest SellingRequest { get; set; } 
    public int SellingRequestId { get; set; } 

    public MortgageAndRent MortgageAndRent { get; set; } 
    public int MortgageAndRentId { get; set; } 

    public List<Photo> Photos { get; set; } 
} 

これは私が実装したいロジックです:

  • (SellingRequest 1 .... 0-1アルバム)
  • (MortgageAndRent 1 .... 0-1アルバム)これらのマッピングで

public class SellingRequestMap : EntityTypeConfiguration<SellingRequest> 
{ 
    public SellingRequestMap() 
    { 
     this.ToTable("SellingRequest"); 
     this.HasKey(sR => sR.Id); 

     // Each SellingRequest may have one Album. (SellingRequest 1 .... 0-1 Album) 
     this.HasOptional(sR => sR.Album).WithOptionalPrincipal(a => a.SellingRequest).WillCascadeOnDelete(false); 
    } 
} 

public RentAndMortgageMap() 
    { 
     this.ToTable("MortgageAndRent"); 
     this.HasKey(mR=>mR.Id); 

     // Each MortgageAndRent may have one Album. (MortgageAndRent 1 .... 0-1 Album) 
     this.HasOptional(sM => sM.Album).WithOptionalPrincipal(a => a.MortgageAndRent).WillCascadeOnDelete(false); 
    } 

しかし、私は結果を得ることができませんでした。私はこれら2つのテーブルをアルバムテーブルに関連付ける方法を知らない!

+0

として、アルバムのプロパティをマークしています。また、 "WithOptionalPrincipal"の後に、 "MapKey"を外部キーを指すように推奨します。 –

+0

あなたが何を意味するかははっきりしません。しかし、私は結果を得ることができませんでした。 –

+0

@Milos Mijatovic私を覚えていただきありがとうございます。元のコードではIdを持っていますが、ここでIDを書くのを忘れました。 –

答えて

0

ここでは、私はそれをfleunt構文なしでやっています。新しいIDフィールドに注意してください、私はあなたのアルバムエンティティが定義されたキーを持っていない仮想

public class SellingRequest 
{ 
    public int Id { get; set; } 
    public int AlbumId {get;set;} 

    public virtual Album Album { get; set; } 
} 

public class MortgageAndRent 
{ 
    public int Id { get; set; } 
    public int AlbumId {get;set;} 

    public virtual Album Album { get; set; } 
} 

public class Album 
{ 
    public int Id { get; set; } 

    public int SellingRequestId { get; set; } 
    public int MortgageAndRentId { get; set; } 

    public virtual SellingRequest SellingRequest { get; set; } 
    public virtual MortgageAndRent MortgageAndRent { get; set; } 

    public virtual List<Photo> Photos { get; set; } 
} 
+0

こんにちは@jhilden。ご回答有難うございます。私はあなた自身のマッピングで提案したようにコードを変更しました(マッピングは上記と考えられています)。しかし、私はこのエラーを受け取ります: "列 'ID'、テーブル 'RealEstateV1Database1.dbo.Album'にNULLを挿入できません;列はNULLを許可しません。INSERTは失敗します。このコード行をアルバムマッピングに置く:this.HasKey(a => a.Id); this.Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); –

+0

マッピングについてのご意見をお聞かせください。 –