【发布时间】:2010-07-29 11:46:32
【问题描述】:
使用 FluentNHibernate、新的 QueryOver API 和新的 Linq 提供程序的众多原因之一都是因为它们消除了“魔术字符串”或表示属性或其他可以在编译时表示的东西的字符串。
遗憾的是,我正在使用 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 的东西都可能受益。
【问题讨论】:
-
Fluent NHibernate 与 QueryOver 完全无关;这只是创建映射的另一种方式。
-
对,但是 Fluent 有能力通过使用 lambdas 消除魔术字符串,就像我想在这里一样。
标签: c# nhibernate fluent-nhibernate orm magic-string