2
を使用して、ツリーのマッピングを命じ:たちはNHibernateはを使用して単純なクラスをマップする必要がありますNHibernateは
public class CatalogItem
{
private IList<CatalogItem> children = new List<CatalogItem>();
public Guid Id { get; set; }
public string Name { get; set; }
public CatalogItem Parent { get; set; }
public IList<CatalogItem> Children
{
get { return children; }
}
public bool IsRoot { get { return Parent == null; } }
public bool IsLeaf { get { return Children.Count == 0; } }
}
は、このテーマに関するインターネットでのチュートリアルのバッチがありますが、それらのどれも少し厄介な詳細をカバーしていない:私たちは必要子供コレクションに保存されることを命じる。私たちはマッピングを試してみましたが、NHibernateによって奇妙な例外が発生しました(「非静的メソッドはターゲットが必要です」)。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Domain.Model" assembly="Domain">
<class name="CatalogItem" lazy="false">
<id name="Id" type="guid">
<generator class="guid" />
</id>
<property name="Name" />
<many-to-one name="Parent" class="CatalogItem" lazy="false" />
<list name="Children" cascade="all">
<key property-ref="Parent"/>
<index column="weight" type="Int32" />
<one-to-many not-found="exception" class="CatalogItem"/>
</list>
</class>
</hibernate-mapping>
誰もが考えていますか?
コードをコンパイルすると、「クラス 'CatalogItem'のプロパティ 'Children'のセッターが見つかりませんでした」というエラーが表示されます。 –