FluentNHibernate、新しい QueryOver API、および新しい Linq プロバイダーを使用する多くの理由の 1 つは、「マジック ストリング」、つまりコンパイル時に表現できるプロパティやその他のものを表す文字列を排除するためです。
悲しいことに、NHibernate の空間拡張を使用していますが、これはまだ QueryOver または LINQ をサポートするようにアップグレードされていません。その結果、QueryOver Lambda 式と文字列の組み合わせを使用して、クエリを実行するプロパティなどを表す必要があります。
私がやりたいことはこれです - Fluent NHibernate (またはおそらく NHibernate QueryOver API) に、魔法の文字列が「あるべき」ものを尋ねる方法が必要です。疑似コードの例を次に示します。
現在、私は書くだろう -
var x = session.QueryOver<Shuttle>().Add(SpatialRestrictions.Intersects("abc", other_object));
書きたいことは――
var x = session.QueryOver<Shuttle>().Add(SpatialRestriction.Intersects(session.GetMagicString<Shuttle>(x => x.Abc), other_object));
このような利用可能なものはありますか?書くのは難しいでしょうか?
編集:これは、空間以外にも適用されることに注意したかっただけです。実際には、QueryOver または LINQ に変換されていないものはすべてメリットがあります。