将WHERE /子句传递给WCF服务

时间:2014-11-19 17:23:27

标签: c# wcf sqlparameters sql-parametrized-query

我在WCF服务上有接受四个参数的方法。方法将处理更新语句以更新MS SQL数据库中的数据。我遇到的问题是我找不到发送子句作为参数的方法。问题是WCF无法接受QueryBuilder的对象,因为它们无法序列化。 WCF上的方法将从asp.net客户端页面调用(没有ajax的东西)。

  1. table(string)
  2. columns(string [])
  3. values(string [])
  4. 子句(????)
  5. WHERE子句应该像三维数组 例如:

    clause.Add("users.id","=",1);  
    

    我目前使用缺失子句的方法

    public bool SqlUpdate(string table, string[] columns, string[] values,??? clause)
    {
        bool success = false;
        DbDataReader dbDataReader = null;
        try
        {
            DbCommand command = new System.Data.SqlClient.SqlCommand();
            UpdateQueryBuilder update = new UpdateQueryBuilder();
            update.SetTable("users");
            update.AddAssignment("firstName", "ChangedName");
            //loop through clauses (it can have multiple clauses) if necessary
            update.Where = new SimpleWhere("users", "id", Comparison.Equals, 4);      //this is where I need to input clause  
            success = true;
        }
        catch (Exception ex)
        {
            WriteError(ex.ToString());
            success = false;
        }
        return success;
    }
    

    UpdateQueryBuilder()是用于通过code-engine.com创建参数化查询的类。可以找到源代码here

1 个答案:

答案 0 :(得分:0)

查看Dynamic Linq(System.Linq.Dynamic)。您可以将查询字符串从客户端传递到服务器,然后使用Dynamic Linq调用它。 http://dynamiclinq.codeplex.com/documentation