gpt4 book ai didi

nhibernate - Count=n 的此 SqlParameterCollection 的索引 n 无效

转载 作者:行者123 更新时间:2023-12-01 11:53:30 25 4
gpt4 key购买 nike

NHibernate 抛出异常:“此 SqlParameterCollection 的索引 n 无效,Count=n。”当我尝试保存 Meter 对象时。问题出在 CurrentReading 属性上。如果我评论说映射出来,一切都很好。另外,如果我在数据库中手动设置 CurrentReading,NHibernate 查询也很好。

我是 NHibernate 的新手,非常感谢任何帮助。

我有以下类(class):

public class Meter
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }

public virtual MeterReading CurrentReading { get; protected set; }

private IList<MeterReading> _readings;
public virtual ReadOnlyCollection<MeterReading> Readings
{
get { return new ReadOnlyCollection<MeterReading>(_readings); }
}

public virtual void AddMeterReading(MeterReading MeterReading)
{
_readings.Add(MeterReading);
if (CurrentReading == null || MeterReading.ReadingTimestamp > CurrentReading.ReadingTimestamp)
{
CurrentReading = MeterReading;
}
}
}

public class MeterReading
{
public virtual Guid Id { get; set; }
public virtual decimal Usage { get; set; }
public virtual DateTime ReadingTimestamp { get; set; }
}

还有这个流畅的 nhibernate 映射文件:

public sealed class MeterMap : ClassMap<Meter>
{
public MeterMap()
{
Id(x => x.Id);

References(m => m.CurrentReading)
.Column("CurrentMeterReadingId")
.LazyLoad()
.Cascade.None()
.Nullable();

HasMany(x => x.Readings)
.KeyColumn("MeterId")
.Access.CamelCaseField(Prefix.Underscore)
.LazyLoad()
.Inverse()
.Cascade.All();
}
}

public sealed class MeterReadingMap : ClassMap<MeterReading>
{
public MeterReadingMap()
{
Id(x => x.Id);

Map(x => x.ReadingTimestamp)
.Not.Nullable();

Map(x => x.Usage)
.Precision(18)
.Scale(8)
.Not.Nullable();
}
}

最佳答案

我的猜测是它与映射同一列两次有关。这就是此错误的一般含义。您可以尝试这种替代映射,因为您没有在 CurrentMeterReading 上使用级联:

References(m => m.CurrentReading)
.Column("CurrentMeterReadingId")
.Not.Update()
.Not.Insert();
.Nullable();

另外我认为延迟加载是默认启用的,所以我认为不需要在映射中指定它。

关于nhibernate - Count=n 的此 SqlParameterCollection 的索引 n 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9285605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com