0
我在这里遇到问题,无法解决此问题。C#&Nhibernate - 将一个实体列表保存到另一个实体
我有2类:
public class Previa
{
public virtual int Id { get; set; }
public virtual DateTime Date { get; set; }
public virtual string Description { get; set; }
public virtual IList<ItemPrevia> ListItemPrevia{ get; set; }
}
public class ItemPrevia
{
public virtual int Id { get; set; }
public virtual string Description { get; set; }
public virtual decimal Price { get; set; }
public virtual Previa Previa { get; set; }
}
和映射:
public class PreviaMap : ClassMap<Previa>
{
public PreviaMap()
{
Id(f => f.Id)
.Length(11);
Map(f => f.Date)
.Not.Nullable();
Map(f => f.Description)
.Not.Nullable();
HasMany<ItemPrevia>(m => m.ListItemPrevia)
.Table("ItemPrevia")
.Inverse()
.Cascade.AllDeleteOrphan()
.Not.LazyLoad();
}
}
public class ItensPreviaMap : ClassMap<ItemPrevia>
{
public ItensPreviaMap()
{
Id(f => f.Id)
.Length(11);
Map(f => f.Description)
.Not.Nullable();
Map(f => f.Price)
.Not.Nullable();
References(f => f.Previa).Column("IdPrevia").Not.LazyLoad();
}
}
在我的系统我必须要注册一个普瑞维亚后,包括一些ItemPrevia。 但是,我可以通知另一个Previa并将您的项目复制到当前Previa。
我该如何坚持其他Previa目前的Previa? 我试试这个:
Previa objPreviaOld = new Previa();
objPreviaOld = PreviaBLL.Search(Convert.ToInt32(txtPreviaOld.Text));
if (objPreviaOld != null)
{
foreach (ItemPrevia objItemPrevia in objPreviaOld.ListItemPrevia)
{
objItemPrevia.Id = 0;
objItemPrevia.Previa = objPrevia;
objPrevia.ListItemPrevia.Add(objItemPrevia);
}
PreviaBLL.Alter(objPrevia);
}
但出现此错误:Domain.Entities.ItemPrevia的实例标识从50改为0
有人帮帮我吗?
这是因为您逻辑*更新对象,即使您认为您正在添加它们。请尝试使用构造函数创建新对象,并复制值。 –