Неверный индекс 1 для этой SqlParameterCollection с Count = 1 - PullRequest
2 голосов
/ 22 октября 2011

Что я заметил, так это то, что в Ncv поле Отчет, на которое я ссылаюсь, не генерируется. Ниже приведена ошибка, которую я получаю.

Вот как выглядит мой домен, и я получаю сообщение об ошибке: Неверный индекс 1 для этой коллекции SqlParameterCollection со счетчиком = 1.

public class NcvMap : SubclassMap<Ncv>
{
    public NcvMap()
    {
        HasManyToMany<Document>(x => x.Technician)
            .Cascade.All();

        HasManyToMany<Document>(x => x.Neurologist)
            .Cascade.All();

        HasManyToMany<Document>(x => x.Transcriber)
            .Cascade.All();

        References<Document>(x => x.Report).Nullable();
    }
}

public class Ncv : Report
{
    public virtual IList<Document> Technician { get; private set; }
    public virtual IList<Document> Neurologist { get; private set; }
    public virtual IList<Document> Transcriber { get; private set; }
    public virtual Document Report { get; set; }
    public virtual NcvType Type { get; set; }

    public Ncv()
    {
        this.Technician = new List<Document>();
        this.Neurologist = new List<Document>();
        this.Transcriber = new List<Document>();
    }
}

public class Report : BaseModel
{
    public virtual Patient Patient { get; set; }
    public virtual ReportStatus Status { get; set; }
    public virtual DateTime Appointment { get; set; }
    public virtual long Kareo_id { get; set; }
    public virtual IList<ReportLog> Logs { get; private set; }

    public Report() 
    {
        this.Status = ReportStatus.New;
        this.Logs = new List<ReportLog>();
    }

    public virtual void AddLog(ReportLog log)
    {
        log.Report = this;
        this.Logs.Add(log);
    }
}

public class ReportMap : ClassMap<Report>
{
    public ReportMap()
    {
        Id(x => x.Id);
        Map(x => x.CreateDate);
        Map(x => x.LastModified);
        Map(x => x.Appointment);
        Map(x => x.Status).CustomType<int>();
        Map(x => x.Kareo_id);

        HasMany<ReportLog>(x => x.Logs)
            .Cascade.All();

        References<Patient>(x => x.Patient);
    }
}

1 Ответ

1 голос
/ 23 октября 2011

Хорошо, проблема была в том, что в

public class Ncv : Report

Я назвал свою сопоставленную ссылку тем же именем, что и класс "Отчет"

public virtual Document Report { get; set; }

Так что не называйте свою собственность тем же именем, что и класс. Это ломает CreateSchema

...