NHibernateはで「グループ名」欄からグループエンティティクラスをマッピングする方法?
-
21-09-2019 - |
質問
私はおおよそ次のように見ている私のデータベース内のテーブルを持っています:
create table Foo (
Id int identity not null,
Name varchar(100) not null,
GroupName varchar(100) not null,
constraint PK_Foo primary key (Id)
)
今、私はこのような2つのエンティティクラスにこのテーブルをマッピングする:
class Foo {
public virtual in Id { get; private set; }
public virtual string Name { get; set; }
public virtual Group Group { get; set; }
}
class FooGroup {
public virtual string Name { get; set; }
public virtual ISet<Foo> Foos { get; private set; }
}
これはNHibernateのでは可能ですか?私はネットとNHのドキュメントを検索しようとしましたが、私は本当に何を探すべきか分からない - 。検索クエリのためのアイデアをいただければ幸いです。
たぶん私は含まれているアイテムの適切なセットを選択するために、別々のグループ名を選択するためのカスタムHQL / SQLクエリを使用していますFooGroup
のマッピング、および他のカスタムクエリを行うことができますか?
解決
私はそれはあなたがNHibernateのマッピングで純粋にやりたいことができないと思う...私は他の誰かが間違って証明することができるが: - )
OTOH、それはにあなたのテーブルからの直接的なマッピングを定義するために非常に簡単です
class RawFooData
{
public virtual in Id { get; private set; }
public virtual string Name { get; set; }
public virtual string GroupName { get; set; }
}
、その後、必要な値を出すために、これを処理します:
IEnumerable<FooGroup> groups = allRawFooData.Select(data => data.GroupName)
.Distinct()
.Select(name => new FooGroup()
{
Name = name
});
foreach(var group in groups)
{
group.Foos = allRawFooData.Where(data => data.GroupName == group.Name);
}
私はあなたのデータの非常に大量(例えば10K行以上)を扱っている場合は、ここでしかパフォーマンスの問題を見つけることになると思います。
所属していません StackOverflow