0

グループが非正規化され、子行に複製されている従来のデータベース (別の従来のアプリケーションでまだ使用されている) があります。

table parent
(
  id
)

table child
(
  id
  parent_id
  group_id
  group_name
  group_Flag
  group_type
  name
)

そして、私はそれらをにマッピングしたいと思います

class Parent
{
    public long Id { get; private set; }
    public ICollection<Group> Groups { get; private set; }
}
class Group
{
    public long Id { get; set; }
    public string Name { get; set; }
    public GroupType Type { get; set; }
    public bool Flag { get; set; }
    public ICollection<Child> Childs { get; private set; }
}
class Child
{
    public long Id { get; private set; }
    public string Name { get; set; }
}
  1. これは可能ですか?
  2. NHibernate のマッピング メソッド (xml、MbC、Fluent など) でそれを行う方法

更新: いくつかの追加情報

  • レガシー アプリケーションのため、スキーマを変更できません
  • データベースの追加ビューはオプションです
  • クラスモデルでリークする可能性があります
4

1 に答える 1

0

ここにいくつかのスターターがあります:

NHibernate リファレンスの「マッピング コレクション」セクションを見てみることができます: - http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-collections

次に、コレクション マッピングの「where」句を使用して、クラスのGroupsプロパティのマッピングを試みることができます。Parent

(9) where (オプション) コレクションを取得または削除するときに使用する任意の SQL WHERE 条件を指定します (コレクションに使用可能なデータのサブセットのみを含める必要がある場合に役立ちます)。

クラスのChildsプロパティを同じ方法でマップします。Group

それ以外の場合は、いくつかのビューを作成してデータを別の方法で表示し、オブジェクトをそれらのビューにマップすることができます (識別子プロパティ マッピングに update="false" および insert="false" を設定します)。

于 2012-07-16T12:47:46.723 に答える