我在mysql中使用c#和nhibernate,我有一个列表可以存储在某些时候可能相同但价格不同的销售产品。
产品A - 价格3.00 产品A - 价格二:2.50
当想要保存它时显示以下内容,我确信nhibernate不能这样做,如果我错了请帮助我,我需要解决这个问题,谢谢。
具有相同标识符值的另一个对象已与会话关联:72,实体:DAL.Ent.Sale
还提到我的数据库,如果该收入允许以不同的价格使用相同的产品,因为它具有使它们不同的唯一标识符。
答案 0 :(得分:0)
根据您提供的信息,我要说您需要查看您的Domain对象的建模方式。
您需要为给定商店分离产品和该产品的价格。中间需要一个连接表来保持商店,产品和产品价格之间的关系。因此,每个记录的给定商店的产品只有一个价格。
所以你最终会得到这样的东西。
public class Product
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual ISet<Price> Prices { get; set; }
}
public class Price
{
public virtual Guid Id { get; set; }
public virtual Product Product { get; set; }
public virtual Store Store { get; set; }
public virtual decimal Price { get; set; }
}
public class Store
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual ISet<Price> ProductPrices { get; set; }
}