我是 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 约束,不是吗?
谢谢,埃里克