5

Mappa Classeindice non valido 6 per questo SqlParameterCollection con 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"); 

    } 
} 

sto ottenendo il seguente errore

indice non valido 6 per questo SqlParameterCollection con Count = 6

Si prega di aiutare

risposta

13

Client Id viene mappato due volte, una volta nella mappatura cAdministratorsKey e di nuovo nel numero Cliente mapping.

rimuovere il mapping Cliente e cambiare la mappatura cAdministratorsKey di inserire un riferimento alla proprietà Cliente come illustrato di seguito:

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 

Questo dovrebbe rimuovere la duplicazione e risolvere il problema.

+0

Grazie CSL ha funzionato. –

+0

Ciò si verifica anche quando si esegue il mapping di una voce HasOne se si dichiara ForeignKey: assicurarsi che il campo della chiave esterna non sia dichiarato come proprietà se si esegue questa operazione. – bschipp

Problemi correlati