【问题标题】:Pass WHERE/clause to WCF service将 WHERE/子句传递给 WCF 服务
【发布时间】:2014-11-19 17:23:26
【问题描述】:

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

  1. 表格(字符串)
  2. 列(字符串[])
  3. 值(字符串[])
  4. 子句 (??????)

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

【问题讨论】:

  • 您可能应该看看OData / WCF Data Services - 听起来您可能正在重新发明轮子?
  • 只能说轮子是后来发明的,当时已经编写了这个 WFC 和 asp.net 应用程序的结构。我能说什么,我不是做出这种决定的人。

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


【解决方案1】:

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

【讨论】:

  • 心灵分享和例子,好吗?因为我不确定我是否理解正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多