同步框架:过滤多行

本文关键字:过滤 框架 同步 | 更新日期: 2023-09-27 18:16:24

我有以下代码,我试图让用户选择多个项目同步:

serverTemplate.Tables["dbo.order_details"].AddFilterColumn("order_id");
serverTemplate.Tables["dbo.order_details"].FilterClause = 
String.Format("[side].[order_id] IN ({0})", "@order_ids");
var param2 = new SqlParameter("@order_ids", SqlDbType.Structured);
serverTemplate.Tables["dbo.order_details"].FilterParameters.Add(param2);
serverTemplate.Apply();

我需要一种方法来过滤多个"order_ids"。我看到的同步框架过滤的例子只过滤一个ID。我认为我可以使用SqlDbType.Structured数据类型来显示"order_ids将是一个列表"。然而,我得到以下错误:serverTemplate.Apply();

System.Data.SqlClient.SqlException was unhandled
  Message=Column, parameter, or variable #5: Cannot find data type READONLY.
Parameter or variable '@order_ids' has an invalid data type.

同步框架:过滤多行

此问题的可能解决方案:

  • 您可以将order_ids设置为DataTable,这是SqlDbType.Structured类型的参数所接受的(参见示例http://s.codeproject.com/KB/database/TableValuedParameters.aspx和http://lennilobel.wordpress.com/2009/07/29/sql-server-2008-table-valued-parameters-and-c-custom-iterators-a-match-made-in-heaven/)

  • 您可以将其表述为某些表上的子选择,您可以使用该子选择来存储每一行一个id。