假设我有产品和类别,并且每个产品都可以存在于多个类别中,如何防止在我的数据库中出现类似这样的内容?我是否必须将其编码到我的域层中,或者NHibernate可以处理它吗?
我不想要的内容
表:ProductsCategories
ProductId CategoryId
--------- ----------
12 23
12 24
12 23
12 23
我想要什么
表:ProductsCategories
ProductId CategoryId
--------- ----------
12 23
12 24
答案 0 :(得分:2)
您需要通过覆盖对象上的Equals并使用集合的set映射将其编码到域图层中。这将阻止集合包含重复项。您还应该向数据库表添加唯一约束。如果你使用它来生成模式,NHibernate可以生成唯一约束但是我没有给你一个例子。