如何动态分配数据库表和列给linq?
我尝试从 sliverlight 应用程序调用 linq 查询到 Web 服务,该服务是“ADD.NET 实体数据模型”和“WCF 数据服务”。下面的 linq 正在工作(例如使用预定义的表和字段名称):
var query = from o in context.ORDER
where o.NUMBER == 1
select o;
((DataServiceQuery<ORDER>)query).BeginExecute(OnQueryComplete, query);
但我需要动态地将不同的表和字段名称分配给 linq 查询。有什么办法吗?我需要在 WCF 中编写一个方法来执行任何 sql 命令吗?
感谢您的任何帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用动态 Linq 示例在 where 子句中提供动态字段名称 - 请参阅:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
此外,您可以使用 PredicateBuilder 以类型安全的方式执行此操作 - http://www.albahari.com/nutshell/predicatebuilder.aspx
对于更多动态行为 - 包括动态表名称 - 我能想到的唯一 Linq 选项是在运行时编译一些代码在您的应用程序中使用
CSharpCodeProvider
(http://support.microsoft.com/kb/304655)。然而,显然,在通过网络服务提供此服务时,您需要小心安全性。You can use the Dynamic Linq samples to provide dynamic field names in where clauses - see: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
Further, you can do this in a type-safe way using PredicateBuilder - http://www.albahari.com/nutshell/predicatebuilder.aspx
For more dynamic behavior - including dynamic table names - the only Linq option I can think of is to compile some code at runtime within your app using the
CSharpCodeProvider
(http://support.microsoft.com/kb/304655). However, obviously you need to be careful with security when offering this from a web service.