【发布时间】:2017-09-01 11:39:52
【问题描述】:
我正在尝试扩展/复制此代码 marisks
包括一个默认的排序拦截器。 但就我的一生而言,我无法完全理解表达式和绑定。
受 SoftDelete 代码的启发
var table = (EntityType)expression.Target.ElementType;
if (table.Properties.All(p => p.Name != IsDeletedColumnName))
{
return base.Visit(expression);
}
var binding = expression.Bind();
return binding.Filter(
binding.VariableType
.Variable(binding.VariableName)
.Property(IsDeletedColumnName)
.IsNull()
);
我正在尝试添加一个类似的东西来对数据进行默认排序。 这是我最接近的(将编译)
var table = (EntityType)expression.Target.ElementType;
string sortingColumn = "Priority";
var binding = expression.Bind();
return binding.Filter(
binding.VariableType
.Variable(binding.VariableName)
.Property(sortingColumn)
.OrderBy(m => m)
);
但它会在运行时抛出异常:
DbExpressionBinding 需要一个带有集合 ResultType 的输入表达式。 参数名称:输入
有人可以帮我解决这个问题 - 并可能帮助我了解发生了什么吗?
【问题讨论】:
-
你能在某个地方发布一个我可以用来尝试和测试的工作 VS 项目吗?
标签: c# entity-framework linq-to-entities interceptor