5

Karte KlasseUngültiger Index 6 für diese SqlParameterCollection mit 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"); 

    } 
} 

ich der folgenden Störung erhalten

Ungültiger Index 6 für diese SqlParameterCollection mit Count = 6

Bitte helfen Sie

Antwort

13

Client Id ist zweimal zugeordnet, einmal in Ihrem cAdministratorsKey Mapping und wieder in Ihrem Cliente mapping.

das Cliente Mapping entfernen und das cAdministratorsKey Mapping ändern, um einen Verweis auf die Cliente Eigenschaft enthält, wie unten gezeigt: Dies sollte die Duplizierung

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 

entfernen und das Problem zu beheben.

+0

Dank CSL hat es funktioniert. –

+0

Dies tritt auch auf, wenn Sie einen HasOne-Eintrag zuordnen, wenn Sie den ForeignKey deklarieren - stellen Sie sicher, dass Ihr Fremdschlüsselfeld nicht als Eigenschaft deklariert ist, wenn Sie dies tun. – bschipp