一个流利的Nhibernate参考/有很多关系应该如何工作?

一个流利的Nhibernate参考/有很多关系应该如何工作?,nhibernate,has-many,fluent,Nhibernate,Has Many,Fluent,我有两个表设置了一个参考和有许多关系。当调用Xref.SaveOrUpdate()时,将引发异常:“计数为7的此SqlParameterCollection的索引7无效。”。我感觉我没有正确设置HasMany和Reference。我应该做些什么不同的事情 public class PortalPhysicianMap : ClassMap<PortalPhysician> { public PortalPhysicianMap() { Table("P

我有两个表设置了一个参考和有许多关系。当调用Xref.SaveOrUpdate()时,将引发异常:“计数为7的此SqlParameterCollection的索引7无效。”。我感觉我没有正确设置HasMany和Reference。我应该做些什么不同的事情

public class PortalPhysicianMap : ClassMap<PortalPhysician>
{
    public PortalPhysicianMap()
    {
        Table("PortalPhysicians");
        Id(x => x.PhysicianRno).GeneratedBy.Identity();
        Map(x => x.A1PhysicianRno);
        Map(x => x.LastName); 
        Map(x => x.FirstName); 
        Map(x => x.TitleName); 
        Map(x => x.SuffixName); 
        Map(x => x.CorrName);
        Map(x => x.Specialty); 
        Map(x => x.Institution); 
        Map(x => x.Addr1); 
        Map(x => x.Addr2); 
        Map(x => x.City); 
        Map(x => x.State); 
        Map(x => x.PostalCode); 
        Map(x => x.Country); 
        Map(x => x.Phone); 
        Map(x => x.Fax); 
        Map(x => x.InactiveDt);
        Map(x => x.CreatedDate, "CreatedDt");
        Map(x => x.UpdatedDate, "UpdatedDt");

        HasMany(x => x.Xrefs)
            .KeyColumn("A1PhysicianRno");
            //.Cascade.All();
    }
}

public class PortalLoginPhyXrefMap : ClassMap<PortalLoginPhyXref>
{
    public PortalLoginPhyXrefMap()
    {
        Table("PortalLoginPhyXref");
        Id(x => x.XrefRno).GeneratedBy.Identity();
        Map(x => x.LoginRno);
        Map(x => x.A1PhysicianRno);
        Map(x => x.UserName);
        Map(x => x.UserRole);
        Map(x => x.InactiveDt);
        Map(x => x.CreatedDate, "CreatedDt");
        Map(x => x.UpdatedDate, "UpdatedDt");

        References<PortalPhysician>(x => x.Login)
            .Column("LoginRno");
    }
}



using (ISession s = Env.dbPortal.OpenSession())
{
    try
    {
        using (ITransaction Trans = s.BeginTransaction())
        {
            Trans.Begin();

            foreach (PortalLogin Login in lstLogins)
            {
                if (Login.UserName != null)
                {
                    Login.SaveOrUpdate(s);

                    foreach (PortalLoginPhyXref Xref in Login.Xrefs)
                    {
                        Xref.LoginRno = Login.LoginRno;
                        Xref.SaveOrUpdate(s);
                    }
                }
            }

            Trans.Commit();
        }
    }
    catch (Exception Ex)
    {
        frmError.Show(Ex);
    }
}
Login.SaveOrUpdate;//使用所有引用的对象保存或更新临时登录对象

foreach (PortalLoginPhyXref Xref in Login.Xrefs)
                {
                    Xref.LoginRno = Login.LoginRno;
                    // Xref.SaveOrUpdate(s); // They'll update when you close transaction.
                }

您在上面的映射中映射了同一列两次。这通常会导致此SqlParameterCollection的索引7
无效,Count=7
错误

下面是一个示例,说明了您正在执行的操作:

Map(x => x.LoginRno);
References<PortalPhysician>(x => x.Login)
        .Column("LoginRno");
Map(x=>x.LoginRno);
引用(x=>x.Login)
.列(“登录号”);

您不应该执行
Map(x=>x.LoginRno)

Login.SaveOrUpdate(“ISession”)中的操作?你能举个代码的例子吗?我刚刚在SaveOrUpdate()中添加了代码。
Map(x => x.LoginRno);
References<PortalPhysician>(x => x.Login)
        .Column("LoginRno");