0

クラスを適切にマップするための Fluent メソッドの適切な組み合わせを見つけるのに苦労しています。基本的に私がやろうとしていることは次のとおりです。

Person table: PersonID, HomeAddressID (nullable), WorkAddressID (nullable)
Address table: AddressID, Street, etc...

PersonクラスにはとAddress HomeAddressプロパティAddress WorkAddressがありますが、ID の整数プロパティはありません。

このクラスには、関連するエンティティAddressのプロパティがありません。Person

このシナリオのオンラインでの例は見つかりません。適切な組み合わせが見つかりません。Code-first 構成は、常に私を混乱させる良い仕事をしてきました。

これは、私が見つけた例の 1 つに最も近いものですが、 を取得Invalid column name 'HomeAddressID'しています。これは、おそらく関係の間違った側をマッピングしていることを示しています。

public class PersonConfiguration : EntityTypeConfiguration<Person>
{
    // other mappings

    HasOptional(p => p.HomeAddress)
        .WithOptionalPrincipal()
        .Map(x => x.MapKey("HomeAddressID"));
    HasOptional(p => p.WorkAddress)
        .WithOptionalPrincipal()
        .Map(x => x.MapKey("WorkAddressID"));    
}

私は正しい軌道に乗っていますか?

4

1 に答える 1

1

個人クラスに HomeAddress ID と WorkAddress ID を追加していただけますか? もしそうなら、これは私のために働く...

public class Person
{
        public int? HomeAddressID { get; set; }
        private Address _homeAddress;
        public Address HomeAddress
        {
            get { return _homeAddress; }
            set
            {
                _homeAddress= value;
                HomeAddressID = value != null ? (int?)value.HomeAddressID : null;
            }
        }
}

public class PersonConfiguration : EntityTypeConfiguration<Person>
{
    HasOptional(a => a.HomeAddress).WithMany().HasForeignKey(p => p.HomeAddressID);
}
于 2014-09-04T21:05:59.807 に答える