我有一个非常简单的数据库表,它以many2many关系连接另外两个表。
(几乎让用户加入问题 - 想想书签)
此表的NHibernate实体如下所示:
public class UserToRequestSubscription
{
public virtual int Id{get;set;}
public vitual int UserId{get;set;}
public virtual int RequestId { get; set; }
public virtual bool AcceptedByRequester { get; set; }
}
我想要做的是添加一个新属性:
public virtual RequestForHelp Request { get; set; }
到目前为止,我可以将其用于选择。在我的UserToRequestSubscriptionMapping
我可以做到:References(x => x.Request)
。
我遇到的问题是在尝试插入新的UserToRequestSubscription
时抛出:Invalid index 6 for this SqlParameterCollection with Count=6.
。
我已经阅读了这个错误,当我删除RequestId
属性时它就消失了但是如果没有这个,插入新订阅时不会填充DB中的RequestId字段。
我该怎么做呢?
我的目标是为RequestForHelp
项目保存对数据库的额外调用。
这是映射类:
public UserToRequestSubscriptionMapping()
{
Id(x => x.Id);
Map(x => x.UserId);
Map(x => x.RequestId);
Map(x => x.CreatedDate);
Map(x => x.AcceptedByRequester);
Map(x => x.IsActive);
Map(x => x.DeactivatedDate);
References(x => x.Request).Column("RequestId");
Table("TheTable");
}
答案 0 :(得分:2)
我猜测问题在于您根据映射引用了两次RequestId。我认为添加RequestId
后,Request
属性是多余的。
public class UserToRequestSubscription
{
public virtual int Id{get;set;}
public vitual User User{get;set;} // you'd probably also change this, too
public virtual RequestForHelp Request { get; set; } // changed
public virtual bool AcceptedByRequester { get; set; }
}
public UserToRequestSubscriptionMapping()
{
Id(x => x.Id);
Map(x => x.CreatedDate);
Map(x => x.AcceptedByRequester);
Map(x => x.IsActive);
Map(x => x.DeactivatedDate);
References(x => x.Request).Column("RequestId");
References(x => x.User).Column("UserId");
Table("TheTable");
}