我的类客户:NHibernate的错误(无法插入具有唯一索引重复键)
public class Client : Entity
{
public Client()
{
ListClientObjectX = new List<ClientObjectX>();
}
public virtual IList<ClientObjectX> ListClientObjectX { get; set; }
...
}
我的班级ClientObjectX
public class ClientObjectX: Entity
{
public ClientObjectX()
{
Client = new Client();
ObjectX = new ObjectX();
}
public virtual Client Client { get; set; }
public virtual ObjectX ObjectX { get; set; }
public virtual string Name {get; set;}
...
}
我ClientObjectX表有2列的唯一索引(客户端ID和ObjectXID):idxClientObjectX
客户端映射(流利):
public class ClientMap : ClassMap<Client>
{
public ClientMap()
{
Table("tblClient");
Id(x => x.ID,"ClientID").GeneratedBy.Identity().UnsavedValue(0);
HasMany<ClientObjectX>(x => x.ListClientObjectX)
.Inverse()
.Cascade.AllDeleteOrphan()
.KeyColumns.Add("ClientID");
}
}
所以,每例如,当我打开一个客户端,即在ListClientObjectX一个对象:
var client = new Repository<Client>().Load(2);
而且从ListClientObjectX删除的对象:
client.ListClientObjectX.RemoveAt(0);
没有保存/提交呢。现在我一个对象添加到ListClientObjectX与同一个客户端和ObjectXID:
client.ListClientObjectX.Add(test);
当我保存,我得到了一个错误:
repCliente.SaveOrUpdate(client);
不能在对象插入重复键行“DBO。 tblClientObjectX'具有唯一索引'idxClientObjectX'。 该声明已被终止。
为什么会出现该错误?我该如何解决这个问题?
感谢
谢谢杰米,但它没有工作...同样的错误... – Paul 2010-07-28 16:41:01