سؤال

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

هل كانت مفيدة؟

المحلول

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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top