5

Карта КлассНедопустимый индекс 6 для этого SqlParameterCollection с графом = 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"); 

    } 
} 

Я получаю следующую ошибку

Недопустимый индекс 6 для этого SqlParameterCollection с графом = 6

Помогите

ответ

13

Client Id отображается дважды, один раз в вашем cAdministratorsKey сопоставлении и снова в вашем Cliente mapping.

Удалить Cliente отображение и изменение cAdministratorsKey отображения, чтобы включить ссылку на Cliente собственность, как показано ниже:

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 

Это должно устранить дублирование и устранить проблему.

+0

Благодаря CSL это сработало. –

+0

Это также происходит при сопоставлении записи HasOne, если вы объявляете ForeignKey - убедитесь, что ваше поле внешнего ключа не объявлено как свойство, если вы это сделаете. – bschipp