【发布时间】:2011-04-25 21:20:40
【问题描述】:
当我尝试保存一个类时,我在 Castle Active Record(围绕 NHibernate)中遇到了这个令人讨厌的错误:
此 SqlParameterCollection 的索引 n 无效,Count=m
我知道这个错误是由一个属性在一个类中被多次映射引起的,但是我不知道如何解决它。我有两个子类,它们都使用同一列 (IpAddressNumber) 映射回相关类。另外 IpAddressNumber 是类的主键,这导致 NHibernate 尝试映射 IpAddressNumber 属性三次(只是猜测。)
这是课程:
[ActiveRecord(Lazy=true)]
public class DeviceConfiguration : UsersDatabase<DeviceConfiguration>
{
[PrimaryKey]
public virtual long IPAddressNumber { get; set; }
[BelongsTo("IPAddressNumber", Lazy = FetchWhen.OnInvoke)]
public virtual Vehicle Vehicle { get; set; }
[BelongsTo("IPAddressNumber", Lazy = FetchWhen.OnInvoke)]
public virtual JBusConfiguration JBusConfiguration { get; set; }
}
任何帮助将不胜感激...
【问题讨论】:
-
这看起来像是一个数据库设计问题...您是在使用一个表来存储 IP 吗?
-
不,我删除了 DeviceConfiguration 的其他属性只是为了显示相关的关联。拥有 2 个子表,它们都根据其 PK 引用父表,这对我来说似乎不是数据库设计问题......
-
如果这是直接 NHibernate,这将使用
配置,您在父表和子表之间有 1:1 的关系,对吧?唯一的问题是 ActiveRecord 如何支持 1:1 关系。 -
BelongsTo 用于 1:1 关系。
标签: nhibernate activerecord castle-activerecord