目前,我使用dynamic-linq库构建查询语句。
执行此查询时出现问题:
query = query.Where("Table1.Column2.Contains(@0)", new string[] { "test" });
供参考:
Table1
:我的数据库中的表名Column2
:Table1
结果,它抛出一个错误:
没有财产或字段'表1'存在于类型'表1'
中
我确定,命名是正确的。我的一个朋友,他也使用完全相同的库,他可以在不同的数据库MSSQL 2014中成功执行它。我正在使用MSSQL 2008.
当我尝试以不同的方式执行此操作时:
query = query.Where("Column2.Contains(@0)", new string[] { "test" });
工作正常..
我想知道,在我的情况下,我必须使用第一种方法。这就是为什么,我做错了什么?
答案 0 :(得分:0)
我的理解是Dynamic Linq仍在对象上运行,而不是将你直接编写的内容传递给SQL?因此,您只能在基础对象属性的内容上添加条件。现在这些可能被定义为从数据库中的各个列填充,但它们不一定是......
我认为你基本上都是在尝试这样做:
class x
{
int SomeProperty{get;set;}
}
...
...
var instance = new x();
instance.SomeProperty = 1;
//compile Error: x is not a property of an instance of x
if (instance.x.SomeProperty==1)
{
// ..Do things
}