2011-01-11 4 views
7

Ich habe zwei entites:Entitätsrahmen (CTP5, Fluent API). Benennen Sie Spalte von Navigationseigenschaft

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

Unten zuordnen Klassen:

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

Wenn Datenbank erzeugt wird, meine ‚Kunde‘ Tabelle hat zwei Spalten für ‚Rechnungsanschrift‘ und " ShippingAddress 'Eigenschaften. Ihre Namen sind 'AddressId' und 'AddressId1'. Frage: Wie kann ich sie in "BillingAddressId" und "ShippingAddressId" umbenennen?

Antwort

4

Grundsätzlich möchten Sie den FK Spaltennamen in einer unabhängige Vereinigung und dieser Code dies für Sie tun anzupassen:

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

Morteza, noch einmal danken. –

+0

Ich habe die von Ihnen vorgeschlagenen Änderungen vorgenommen. Aber in meiner ersten Post habe ich das Modell vereinfacht. Meine Kundenklasse hat eine weitere Eigenschaft, die eine Liste aller Adressen enthält: "public virtual ICollection

Adressen {get; set;}". und Kundenkonfigurationsklasse (CustomerMap) hat eine weitere Zeile: "this.HasMany
(c => c.Addresses) .WithMany() Karte (m => m.ToTable (" CustomerAddresses "));" Jetzt bekomme ich den folgenden Fehler: "Sequenz enthält mehr als ein passendes Element". Irgendwelche Gedanken? –

+0

Kein Problem. Ich habe Ihre zusätzlichen Codes kopiert und eingefügt und es funktionierte perfekt für mich, indem ich eine neue Viele-zu-Viele-Verknüpfung zwischen Kunde und Adresse erstellte, sodass ich Ihre Ausnahme nicht reproduzieren kann. Können Sie bitte Ihr komplettes Objektmodell und Ihren Kundencode posten? –

Verwandte Themen