理論的には同じ結果を返す2つの類似したクエリがあります。
var requestNotWorking = SessionManagement.Db.Linq<Item>(false).Where(i =>
i.Group != null && i.Group.Id == methodParameter)
.ToList();
このリクエストは、1つを返すことになっていますが、0のアイテムを返します。以下は後者を書き直したものですが、ToList()
メソッドを呼び出しています。このリクエストは機能し、最初のクエリで期待されるアイテムを返します。
var requestWorking = SessionManagement.Db.Linq<Item>(false).ToList().Where(i =>
i.Group != null && i.Group.Id == methodParameter).ToList();
注:SessionManagement.Db.Linq<Item>(false)
は、リクエストをキャッシュ(true)またはデータベース(false)のどちらで実行する必要があるかを決定するブール属性を持つ汎用のLinqtoNhibernateメソッドです。この方法は、ソリューションの他の多くの部分で正常に機能するため、おそらく問題はありません。アイテムのマッピングは特別なものではありません。バッグと次のパラメータはありません。
lazy="false" schema="dbo" mutable="false" polymorphism="explicit"
なんでそうなの?
編集:
requestNoWorkingの生成されたSQL要求は、次で終了します。
(Item.Group_ID is not null) and Item.Group_ID=@p0',N'@p0 int',@p0=11768
requestWorkingの生成されたSQLリクエストは、おおよそselect * from dbo.Items