我必须从数据库接收特定于用户的工作人员。
所有用户的过滤器都不同,因此必须将所有订单发送到英国,其他所有订单都运送到其他5个国家/地区,其中一个订单执行所有高价值的商品,其中一个订单执行包含的订单> 10项等。
所以,我想出了这个想法(如果你有更好的想法,可以拍摄它!)
我为每个用户创建一个视图,所有视图都返回相同的数据,但过滤器不同。
在ado.net中我会做这样的事情:
string sql = "select * from vwWorkOrders" + userName;
[rest of the ado.net here]
但现在我正在使用ef4,我想知道这种代码的等价物是什么。
答案 0 :(得分:9)
您可以使用以下示例中的ExecuteStoreQuery method:
context.ExecuteStoreQuery<vwWorkOrder>(sql);
此方法允许您执行存储SQL并获取强类型结果 如果您需要传递一些参数,只需在ExecuteStoreQuery的调用中传递必要的ObjectParameter实例。
答案 1 :(得分:3)
您可以使用eSQL,它可以让您的查询更加灵活。您可以预先下载LinqPad来使用它。
// whereClause is a string
string query = string.Format("select * from ObjectContext.vwWorkOrders where {0}", whereClause);
然后只需使用EntityConnection
和EntityCommand
类来执行命令,并以与ADO.NET完全不同的方式遍历结果。
// userName is a string, ie "Michel"
string query = string.Format("select * from ObjectContext.vwWorkOrders{0}", userName);