如何对HasManyToMany NHibernate关系强制执行唯一约束?

时间:2010-12-06 17:43:12

标签: nhibernate fluent-nhibernate nhibernate-mapping

假设我有产品和类别,并且每个产品都可以存在于多个类别中,如何防止在我的数据库中出现类似这样的内容?我是否必须将其编码到我的域层中,或者NHibernate可以处理它吗?

我不想要的内容

表:ProductsCategories

ProductId  CategoryId
---------  ----------
12         23
12         24
12         23
12         23

我想要什么

表:ProductsCategories

ProductId  CategoryId
---------  ----------
12         23
12         24

1 个答案:

答案 0 :(得分:2)

您需要通过覆盖对象上的Equals并使用集合的set映射将其编码到域图层中。这将阻止集合包含重复项。您还应该向数据库表添加唯一约束。如果你使用它来生成模式,NHibernate可以生成唯一约束但是我没有给你一个例子。