Entity framework条件查询楼
Entity framework condidional query building
我在使用 entity framework 创建复杂查询时遇到问题。我想根据在构造此类查询期间给出的参数将其他数据提取到我的 linq 实体中。以下是其中的示例:
if (featureEnabled)
{
query = query.Where(n => *condition*);
}
我有这样创建的复杂对象:
n => new Entity{
Property = n.Something
\* ... *\
PropertyN = n.SomethingN,
}
如果启用了功能,我想将额外的数据加载到实体中(就像在示例中一样):
public DoSomething(bool featureEnabled, feature2Enabled, etc.)
{
return n => new Entity{
Property = n.Something,
\* ... *\
PropertyN = n.SomethingN,
Feature = (featureEnabled) ? *fetch some data from navigation property* : 0,
Feature2 = (feature2Enabled) etc.
}
}
在上面的示例中,参数 (featureNEnabled) 将被转换为 sql 参数。如何在查询构造时执行这样的操作?
您的意思是在 initializer
中使用 if 条件吗?
如果是这样,我将不可能。要使用 if 条件,您必须将其放在初始化程序
之外
var a = new MyClass{
prop1 = n.prop1,
prop2 = n.prop2,
prop3 = n.prop3,
};
a.propN = boolCondition ? n.PropN : 0;
我终于找到了问题的答案on this blog
使用此代码,您可以调用 expression.Merge(expression2),两个对象的初始化列表将合并到一个查询中。
我在使用 entity framework 创建复杂查询时遇到问题。我想根据在构造此类查询期间给出的参数将其他数据提取到我的 linq 实体中。以下是其中的示例:
if (featureEnabled)
{
query = query.Where(n => *condition*);
}
我有这样创建的复杂对象:
n => new Entity{
Property = n.Something
\* ... *\
PropertyN = n.SomethingN,
}
如果启用了功能,我想将额外的数据加载到实体中(就像在示例中一样):
public DoSomething(bool featureEnabled, feature2Enabled, etc.)
{
return n => new Entity{
Property = n.Something,
\* ... *\
PropertyN = n.SomethingN,
Feature = (featureEnabled) ? *fetch some data from navigation property* : 0,
Feature2 = (feature2Enabled) etc.
}
}
在上面的示例中,参数 (featureNEnabled) 将被转换为 sql 参数。如何在查询构造时执行这样的操作?
您的意思是在 initializer
中使用 if 条件吗?
如果是这样,我将不可能。要使用 if 条件,您必须将其放在初始化程序
之外var a = new MyClass{
prop1 = n.prop1,
prop2 = n.prop2,
prop3 = n.prop3,
};
a.propN = boolCondition ? n.PropN : 0;
我终于找到了问题的答案on this blog 使用此代码,您可以调用 expression.Merge(expression2),两个对象的初始化列表将合并到一个查询中。