我有一段 LINQ 代码片段,需要在很多查询中使用
let catchmentId = Convert.ToInt32(
phy.PhysicalProperty_binData.Substring(offset + 3, 1) +
phy.PhysicalProperty_binData.Substring(offset + 2, 1) +
phy.PhysicalProperty_binData.Substring(offset + 1, 1) +
phy.PhysicalProperty_binData.Substring(offset, 1))
这可以很好地转换为 SQL(并且性能超出了我的特定需求),但使我的查询看起来很丑陋。有什么办法可以让这个变得不那么冗长吗?也许是返回 Expression> 的扩展方法?请注意,我不想将数据获取到客户端(在服务器上作为 SQL 运行它),这使事情变得更加复杂。例如:
let catchmentId = phy.PhysicalProperty_binData.AnExtensionMethodHere<int>(offset)
我尝试编写一个扩展方法来执行此操作,但提供程序只是忽略该调用或抛出一个异常,表明它不知道如何将该调用转换为 SQL。我们能否以某种方式扩展 SQL 生成器来为我们执行此操作,或者以某种方式为其提供生成相同 SQL 的功能?
提前致谢!
上的链接这一页将向您展示如何使用自定义属性将扩展方法与数据库中的用户定义函数联系起来。
当然,这意味着您需要在 SQL 中创建一个用户定义函数来执行扩展方法想要执行的相同逻辑。
另一种选择是让你的扩展方法产生一个Expression
,并使用LINQKit解析查询树,找到对.Compile()
离开该表达式,并将该表达式内联到查询中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)