次のシナリオを検討してください。
public class House
{
public string Name { get; set; }
public virtual Person Person1 { get; set; }
public virtual Person Person2 { get; set; }
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public House House { get; set; }
}
// Relationships
this.HasOptional(t => t.Person1)
.WithRequired(t => t.House);
this.HasOptional(t => t.Person2)
.WithRequired(t => t.House);
House のインスタンスを挿入しようとすると、MetaDataException がスローされます。
指定されたスキーマは無効です。エラー: (36,6): エラー 0040: タイプ House_Person1 が名前空間 Company.Models で定義されていません (エイリアス = Self)。
もう少しハッキングした後、これが機能すると考えました:
// Relationships
this.HasOptional(t => t.Person1)
.WithRequired();
this.HasOptional(t => t.Person2)
.WithRequired();
しかし、EF によって作成された Person.House プロパティはありません。この動作をエミュレートできますか (以下を参照)。
public virtual Person Person1
{
get
{
return _person1;
}
set
{
_person1 = value;
_person1.Haushalt = this;
}
}
public virtual Person Person2
{
get
{
return _person2;
}
set
{
_person2 = value;
_person2.Haushalt = this;
}
}