首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate错误消息无效索引4用于此SqlParameterCollection与Count=4

NHibernate错误消息无效索引4用于此SqlParameterCollection与Count=4
EN

Stack Overflow用户
提问于 2015-01-12 13:07:16
回答 1查看 2K关注 0票数 1

NHibernate错误消息无效索引4对此SqlParameterCollection与Count=4。

我的地图:

代码语言:javascript
复制
public KazangAccountClassMap()
{
    Table("KazangAccount");
    Id(x => x.Id).GeneratedBy.Identity();
    Map(x => x.Channel).Not.Nullable();
    Map(x => x.UserName).Not.Nullable();
    Map(x => x.Password).Not.Nullable();
    HasMany<KazangMerchant>(x => x.KazangMerchants)
      .KeyColumn("AccountId")
      .Inverse();
}

主计长:

代码语言:javascript
复制
public ActionResult SaveChannelProperty(string NewProp, string ChannelName)
{
    client.CreateKazangChannelAttribute(new KazangChannelAttr
    {
        KazangChannelId = ChannelObject.Id,
        AttrName = NewProp,
        AttrValue = NewProp,
        AttrType = ""          
    });
}
EN

回答 1

Stack Overflow用户

发布于 2015-01-12 13:28:37

这种异常几乎总是与“加倍”映射有关。因为从问题中所显示的片段来看,很难显示出来,我会这样解释:

让我们有一个实体KazangAccount,它引用Channel,并将该对象的Channel表示为ChannelId

代码语言:javascript
复制
public class KazangAccount
{
    public virtual int Id { get; set; }
    ...
    public virtual Channel Channel { get; set; }
    public virtual int ChannelId { get; set; }
}

在这种情况下,我们需要构造NHibernate来使用ONE列来表示TWO properties --这是行不通的:

代码语言:javascript
复制
public KazangAccountClassMap()
{
    ...
    References(x => x.Channel)
       .Column("Channel_ID"); // the Channel reference
    Map(x => x.ChannelId)
       .Column("Channel_ID");      // the int property ChannleId

这种映射对任何读取操作都是有益的..。列将被使用两次。但是对于写操作,我们将为列Channel_ID创建params,为列Channel_ID ==创建另一个params,只创建其中的一个。虽然NHibernate预计会有一些参数,但缺少一个。

解决方案?使这些只读之一

代码语言:javascript
复制
public KazangAccountClassMap()
{
    ...
    References(x => x.Channel)
       .Column("Channel_ID"); // READ and WRITE
    Map(x => x.ChannelId)
       .Column("Channel_ID")  // just READ
       .ReadOnly()            // insert="false" update="false"
       ; 

现在,NHibernate将只为该列创建/期望一个列/sqlParamter.

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27902712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档