【发布时间】:2017-10-25 14:21:16
【问题描述】:
我对 LinqToSql 方法有疑问。
型号:
public class Person
{
public int ID { get; set; }
public string LastName { get; set; }
public Phone Phone { get; set; }
}
public class Phone
{
public int ID { get; set; }
public string Number { get; set; }
public bool IsUkr()
{
return this.Number.StartsWith("380");
}
}
我使用 Nhibernate 作为 ORM,我想执行
IQueryable<Phone> phones = session.Query<Phone>().Where(x => x.IsUkr());
但 Nhibernate 无法将此表达式转换为 sql,因为它不知道方法 IsUkr()。
解决方案是为 IQueryable 接口编写一些包装器并使用:
session.Query<Phone>().ToExpandable().Where ....
但我不明白如何将 LambdaExpression x => x.IsUkr() 翻译成
x => x.Number.StartsWith("380")
有人可以帮我吗?
【问题讨论】:
-
如果这是例行检查,您可以考虑将其作为数据库表中的计算属性。
-
@GertArnold 感谢您的想法。但是对于模型中的其他属性有很多这样的条件,所以这种方法不是很好
-
我不确定你在找什么,但你可以看看stackoverflow.com/a/26922208/1486443
标签: linq nhibernate linq-to-sql