c#中非惟一对象

本文关键字:对象 | 更新日期: 2023-09-27 18:03:50

我在mysql中使用c#和nhibernate,我有一个列表,存储销售的产品在某些时候可能是相同的,但不同的价格。

产品A -价格3.00产品A -价格二:2.50

当我想保存它的时候显示给我以下,我确定是nhibernate不能这样做,如果我错了请帮助我,我需要解决这个问题,谢谢。

具有相同标识符值的不同对象已经与实体:DAL.Ent.Sale的会话:72相关联

还提到我的数据库,如果收入允许相同的产品以不同的价格出售,因为它有一个唯一的标识符,使它们不同。

c#中非惟一对象

根据您提供的信息,我想说您需要查看您的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; }
}