2015-09-11 14 views
5

Ho un'entità che ha una relazione che utilizza FK ProductId, quindi ho un'altra relazione sulla stessa entità utilizzando le chiavi composite ProductId e VehicleId. Questo non funziona. Ottengo sono stati rilevatiIl nome della proprietà 'ProductId' è già definito

uno o più errori di convalida durante la generazione del modello:

ProductId: Nome: ogni nome di proprietà in un tipo deve essere univoco. Proprietà nome 'ProductId' è già definito.

Config codice

public class BookingConfiguration : EntityTypeConfiguration<Booking> 
    { 
     public BookingConfiguration() 
     {  
      ... 

      HasRequired(b => b.Product) 
       .WithMany(p => p.Bookings) 
       .Map(m => 
       { 
        m.MapKey("ProductId"); 
       }); 

      HasRequired(b => b.Vehicle) 
       .WithMany(v => v.Bookings) 
       .Map(m => 
       { 
        m.MapKey("ProductId","VehicleId"); 
       }); 
     } 
    } 
+2

Se ProductId esiste nel modello di prenotazione, hai provato HasForeignKey() invece di MapKey()? http://stackoverflow.com/questions/17639599/entity-framework-property-name-in-a-type-must-be-unique –

risposta

3

Steve Greene mi ha messo sulla strada giusta, ho aggiunto ProductId e VehicleId per l'Ente e utilizzato

HasRequired(b => b.Vehicle) 
    .WithMany() 
    .HasForeignKey(b => new {b.ProductId, b.VehicleId}); 

In una prospettiva di dominio che non mi piace aggiungendo le chiavi esterne all'entità, quindi se qualcuno ha una soluzione migliore per favore fatemelo sapere.

Problemi correlati