NHibernate在将字段比较为null时非常聪明。请考虑以下LINQ语句:
string s = null;
var rows = session.Query<Entity>
.Where(e => e.SomeField == s)
.ToList();
该语句转换为SQL查询
SELECT ...
FROM entity_table
WHERE some_field IS NULL;
在某些情况下,我不想要这种行为。我希望生成的查询包含some_field = NULL
限制(永远不会成立)。
(怎么样)我可以指示NHibernate这样做吗?或者我是否必须编写两个查询并在代码中明确处理null-case?
请注意,这是在NHibernate的上下文中,而不是linq-to-sql。 NHibernate无法将object.Equals(e.SomeField, s)
转换为SQL查询。此外,与当前null
的变量进行比较并直接与null
关键字进行比较,将会产生与NHibernate相同的查询。
答案 0 :(得分:1)
您可以使用string s = null;
var rows = session.QueryOver<Entity>()
.Where(Expression.Eq(Projections.Property<Entity>(x => x.SomeField), s))
.List();
,但会生成参数化查询:
angular.module('secrunApp').service('appState', function () {
this.currentAnswerset = 1;
this.currentQuestion = 2;
this.name;
function set(key, value) {
console.log('>> set appStateModel', key, value);
var localVar = key;
this[localVar] = value;
}
function get(key) {
console.log('<< get appStateModel', key, this[key]);
return this[key];
}
return {
get: get,
set: set
}
});