非唯一对象nhibernate c#

时间:2014-05-16 23:25:01

标签: c# hibernate nhibernate

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

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

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

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

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

1 个答案:

答案 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; }
}