2011-01-11 26 views
7

sütununu yeniden adlandırın: AşağıdaVarlık çerçevesi (CTP5, Akıcı API). İki entites sahip navigasyon özelliğinin

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; } 
    } 

sınıfları eşleştirdiğimize:

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

veritabanı oluşturulduğunda, hem 'Müşteri' tablo 'BillingAddress' ve 'için iki sütun vardır ShippingAddress 'özellikleri. İsimleri 'AddressId' ve 'AddressId1'. Soru: Onları 'BillingAddressId' ve 'ShippingAddressId' olarak nasıl yeniden adlandırabilirim?

cevap

4

Temelde bir bağımsız dernek FK sütun adı özelleştirmek istiyorsanız ve bu kodu sizin için bunu yapacak:

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

Murtaza yine teşekkür ederim. –

+0

Önerdiğiniz değişiklikleri yaptım. Ama ilk yazımda modeli sadeleştirdim. Müşteri sınıfımda, tüm adreslerin bir listesini içeren bir başka özellik daha var: "public virtual ICollection

Adresler {get; set;}". Ve müşteri yapılandırma sınıfının (CustomerMap) bir satırı daha var: "this.HasMany
(c => c.Addresses) .WithMany(). Map (m => m.ToTable (" CustomerAddresses "));" Şimdi şu hatayı alıyorum: "Sıra birden fazla eşleşen öğe içeriyor". Düşüncesi olan var mı? –

+0

Sorun değil. Ek kodlarınızı kopyaladım ve yapıştırdım ve Müşteri ile Adres arasında çoktan çok yeni bir ilişki oluşturarak mükemmel bir şekilde çalıştım, böylece istisnayı yeniden oluşturamıyorum. Tam nesne modelinizi ve müşteri kodunuzu gönderebilir misiniz? –

İlgili konular