5

Mapa KlasaNieprawidłowy indeks 6 tej SqlParameterCollection z count = 6

public class cAdministratorMap : ClassMap<cAdministrator> 
{ 

    public cAdministratorMap() 
    { 
     Table("Administrators"); 

     CompositeId<cAdministratorsKey>(c => c.Key) 
      .KeyProperty(x => x.Client_id, "client_id") 
      .KeyProperty(x => x.Start_date, kp => kp.ColumnName("start_date").Type(DbType.Date.ToString())) 
      .KeyProperty(x => x.Adm_type, kp => kp.ColumnName("adm_type").Type(DbType.AnsiString.ToString())); 

     Map(x => x.Person_id, "person_id").Not.Insert().Not.Update(); 
     Map(x => x.end_date).Column("end_date"); 
     Map(x => x.description).Column("description").Length(200); 

     References(x => x.Person).Column("person_id"); 
     References(x => x.Cliente).Column("client_id"); 

    } 
} 

otrzymuję następujący błąd

Nieprawidłowy indeks 6 tej SqlParameterCollection z count = 6

Proszę o pomoc

Odpowiedz

13

Client Id jest mapowany dwukrotnie, raz w mapowaniu cAdministratorsKey i ponownie w twoim Cliente mapping.

Usuń mapowanie Cliente i zmienić mapowanie cAdministratorsKey zawierać odniesienie do właściwości Cliente jak pokazano poniżej:

CompositeId<cAdministratorsKey>(c => c.Key) 
     .KeyReference(x => x.Cliente, "client_id") // Changed to KeyReference 
     .KeyProperty(x => x.Start_date, kp => kp.ColumnName("start_date").Type(DbType.Date.ToString())) 
     .KeyProperty(x => x.Adm_type, kp => kp.ColumnName("adm_type").Type(DbType.AnsiString.ToString())); 

    // References(x => x.Cliente).Column("client_id"); Removed as not needed 

Należy usunąć powielania i rozwiązać problem.

+0

Dzięki CSL zadziałało. –

+0

To również występuje, gdy zamapujesz wpis HasOne, jeśli zadeklarujesz ForeignKey - upewnij się, że pole klucza obcego nie zostanie zadeklarowane jako właściwość, jeśli to zrobisz. – bschipp