Fluent-NHibernate は初めてです。私の問題は、2 つのエンティティ間に 1 対多の関係を確立したいということです。製品は複数の (一意の) リビジョンを持つことができ、特定のリビジョンは 1 つの製品にのみ属します。たとえば、Product1 にはリビジョン "a" とリビジョン "b" がありますが、2 つのリビジョン "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 制約には必要ですよね?
ありがとう、エリック