2011-01-11 7 views
7

の列の名前を変更します。クラスを以下エンティティフレームワーク(CTP5、Fluent API)。私は2つのentitesているナビゲーションプロパティ

public class Address 
{ 
     public int Id { get; set; } 
public string FirstName { get; set; 
public string LastName { get; set; } 
} 

public partial class Customer 
    { 
     public int Id { get; set; } 
     public string Email { get; set; } 
     public string Username { get; set; } 

     public virtual Address BillingAddress { get; set; } 
     public virtual Address ShippingAddress { get; set; } 
    } 

をマッピングしている:

public partial class AddressMap : EntityTypeConfiguration<Address> 
    { 
     public AddressMap() 
     { 
      this.ToTable("Addresses"); 
      this.HasKey(a => a.Id); 
     } 
    } 
public partial class CustomerMap : EntityTypeConfiguration<Customer> 
    { 
     public CustomerMap() 
     { 
      this.ToTable("Customer"); 
      this.HasKey(c => c.Id); 

      this.HasOptional<Address>(c => c.BillingAddress); 
      this.HasOptional<Address>(c => c.ShippingAddress); 
     } 
    } 

データベースが生成されると、私の「顧客」テーブルには '「BillingAddress」の2つの列を持ち、 ShippingAddressのプロパティ。彼らの名前は 'AddressId'と 'AddressId1'です。 質問:「BillingAddressId」と「ShippingAddressId」に名前を変更するにはどうすればよいですか?

答えて

4

基本的には独立した関連でFKの列名をカスタマイズすると、このコードはあなたのためにこれを行います。

public CustomerMap() 
{ 
    this.ToTable("Customer");    

    this.HasOptional<Address>(c => c.BillingAddress) 
     .WithMany() 
     .IsIndependent().Map(m => 
     { 
      m.MapKey(a => a.Id, "BillingAddressId");      
     }); 

    this.HasOptional<Address>(c => c.ShippingAddress) 
     .WithMany() 
     .IsIndependent().Map(m => 
     { 
      m.MapKey(a => a.Id, "ShippingAddressId"); 
     });    
} 

alt text

+0

モルテザは、もう一度感謝します。 –

+0

あなたが提案した変更を加えました。しかし私の最初の記事では、モデルを単純化しました。私の顧客クラスには、 "public virtual ICollection

Addresses {get; set;}"というすべてのアドレスのリストを含むプロパティがもう1つあります。 顧客構成クラス(CustomerMap)には、 "this.HasMany
(c => c.Addresses).WithMany()。Map(m => m.ToTable(" CustomerAddresses "));" 次のエラーが表示されます。「シーケンスに複数の要素が含まれています」何かご意見は? –

+0

問題ありません。私はあなたの追加コードをコピーして貼り付けました。あなたの例外を再現することができないように、顧客と住所の間に新しい多対多の関連付けを作成することによって私は完璧に働きました。完全なオブジェクトモデルとクライアントコードを投稿できますか? –

関連する問題