非唯一对象nhibernate c#

非唯一对象nhibernate c#,c#,hibernate,nhibernate,C#,Hibernate,Nhibernate,我与mysql中的c#和nhibernate合作,我有一个商店销售的产品列表,这些产品在某些时候可能是相同的,但价格不同 产品A-价格3.00 产品A-价格二:2.50 当想要保存它时,它会显示以下内容,我确信nhibernate不能这样做,如果我错了,请帮助我解决这个问题,谢谢 具有相同标识符值的不同对象已与实体DAL.Ent.Sale的会话72关联 还要提到我的数据库,如果该收入允许相同的产品以不同的价格销售,因为它有一个唯一的标识符使它们不同。根据您提供的信息,我想说您需要查看域对象的建模

我与mysql中的c#和nhibernate合作,我有一个商店销售的产品列表,这些产品在某些时候可能是相同的,但价格不同

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

当想要保存它时,它会显示以下内容,我确信nhibernate不能这样做,如果我错了,请帮助我解决这个问题,谢谢

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


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

根据您提供的信息,我想说您需要查看域对象的建模方式

您需要将给定商店的产品和该产品的价格分开。中间需要有一个连接表来保持商店、产品和产品的价格之间的关系。因此,对于给定的商店,每个记录只有一个产品价格

所以你最终会得到这样的结果

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; }
}
公共类产品
{
公共虚拟Guid Id{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟ISet价格{get;set;}
}
公共类价格
{
公共虚拟Guid Id{get;set;}
公共虚拟产品产品{get;set;}
公共虚拟存储{get;set;}
公共虚拟十进制价格{get;set;}
}
公共类商店
{
公共虚拟Guid Id{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟ISet ProductPrices{get;set;}
}