私はこれに夢中になり、助けに感謝します。Linq Nhibernate:外部キーテーブルから値を引き出すことができません
フォント FontColors私はFontColorsは、フォントテーブルの情報を報告し、コンピュータが同様に含ま取得する必要があります
: は、外部キーに接続された2つのテーブルを想像してみてください。エンティティフレームワークを介して、私は明らかにフォント色 "フォント"テーブルプロパティに次のようにアクセスできます:文字列fontName = FontColors.Fonts.Name;
シンプル...右ですか?
ここでは、InfoFullColorsという別のクラスを作成して、たとえば、私が表示するレポートモデル(Jquery Gridレポート)と一致するように、同じフォントとFontColors情報私のコンピュータの説明テーブル。
var computerFonts = from f in FontColors
select new ComputerFontColors
{
FontColor = f.Color,
FontName = f.Fonts.Name,
ComputerUsedOn = ComputerServices.GetByFontId(f.Fonts.Id)
}
はそれを得ることができるほど単純であるように思わが、何らかの理由でそれがうまく動作しないために:だからComputerFontColorsクラスは、我々はこのようなもので行くことに移入する
。 Nhibernate Linqは "ComputerUsedOn = ComputerServices.GetByFontId(f.Fonts.Id)"の部分を好まず、 "Could not instantiate:FontFolors"というエラーを返すだけです。
メソッド ComputerServices.GetByFontId(f.Fonts.Id) それ自身で正常に動作します。
でスロー静的な値を持つクエリ:
var computerFonts = from f in FontColors
select new ComputerFontColors
{
FontColor = f.Color,
FontName = f.Fonts.Name,
ComputerUsedOn = ComputerServices.GetByFontId(6)
}
が正常に動作します。
しかし、それらを組み合わせると、コードがクラッシュします。 これに貼り付けられました。
ありがとうございます。
それは働いた。ありがとう! – vanyok
注意! 'f.Fonts'は熱心にフェッチされない関連を意味するので、潜在的な' SELECT N + 1'問題があります。常にSQLプロファイラまたはNHProfなどのクエリを使用して、クエリが実行可能であることを確認してください。 :-) – Rytmis