使用 FluentNHibernate、新的 QueryOver API 和新的 Linq 提供程序的众多原因之一都是因为它们消除了“魔术字符串”或表示属性的字符串或其他可以在编译时表示的东西。
遗憾的是,我正在使用尚未升级为支持 QueryOver 或 LINQ 的 NHibernate 的空间扩展。结果,我不得不使用 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 的东西都可能受益。