2014-09-04 40 views
0

我無法正確找到Fluent方法的正確組合來映射我的類。這裏的基本上就是我想要做的事:使用自定義列名稱的單向配置

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

Person類有一個Address HomeAddressAddress WorkAddress屬性,但不是爲ID的整數性能。

Address類沒有任何與其相關的Person實體的任何屬性。

我在這個場景中沒有找到任何網上的例子,我只是找不到合適的組合。代碼優先的配置一直做得很好,令我困惑。

這是最接近我發現的例子之一,但我得到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"));  
} 

我在正確的軌道上嗎?

回答

1

您可以將HomeAddress和WorkAddress ID添加到person類嗎?如果是這樣,這對我的作品......

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); 
} 
+0

看起來像這樣的作品,感謝,但我故意不暴露這些屬性。在現實生活中,這是一個可更新的視圖,底層的列不會使用視圖的觸發器更新。我不想讓它看起來像開發人員可以分配一個值到該列,並期望它保存。 – 2014-09-04 21:31:10