具有UniqueKey约束的一对多关系
|
我是Fluent-NHibernate的新手。
我的问题是想要在两个实体之间建立一对多关系。
一个产品可以有多个(唯一的)修订版,而一个特定的修订版仅属于一个产品。
因此,例如Product1有一个修订版\“ a \”和一个修订版\“ b \”,但是不能有两个修订版\“ a \”。这就是我的类定义:
public class Product
{
public virtual int ID {get; private set;}
public IList<ProductRevision> revisions { get; set; }
}
public class ProductRevision
{
public virtual int ID {get; private set;}
public Product isRevisionOf { get; set; }
public virtual string revision { get; set; }
}
这是我的地图
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(x => x.ID).Column(\"ProductNo\");
HasMany(x => x.revisions).Cascade.All();
}
}
public class ProductRevisionMap : ClassMap<ProductRevision>
{
public ProductDefinitionFormationMap()
{
Id(x => x.ID);
References(x => x.isRevisionOf).UniqueKey(\"Product_Revision\").Not.Nullable();
Map(x => x.revision).UniqueKey(\"Product_Revision\").Not.Nullable();
}
}
我现在得到的是ProductRevision表中的多余列\“ Product_Id \”。我通过用hasMany()和references()在双方定义关系来弄错了。
通常,我不会定义References(...)映射,但是我需要它来用于uniquekey约束,不是吗?
谢谢,
埃里克
没有找到相关结果
已邀请:
1 个回复
甲车劲
Inverse和KeyColumn是此难题的缺失部分。 此映射会在数据库中生成所需的约束,但是您仍然需要在业务逻辑中检查此约束,否则,如果将具有重复名称的修订插入修订集合中,则会出现SqlException。