Pregunta

Map Class

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

    }
}

I am getting the following error

Invalid index 6 for this SqlParameterCollection with Count= 6

Please help

¿Fue útil?

Solución

Client Id is mapped twice, once in your cAdministratorsKey mapping and again in your Cliente mapping.

Remove the Cliente mapping and change the cAdministratorsKey mapping to include a reference to the Cliente property as shown below:

  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

This should remove the duplication and fix your issue.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top