一个流利的Nhibernate参考/有很多关系应该如何工作?
我有两个表设置了一个参考和有许多关系。当调用Xref.SaveOrUpdate()时,将引发异常:“计数为7的此SqlParameterCollection的索引7无效。”。我感觉我没有正确设置HasMany和Reference。我应该做些什么不同的事情一个流利的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
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");