将 SQL 查询结果映射到 C# 对象

Map SQL query results into C# Object

我正在寻找可以帮助我使用 WCF 将查询结果映射到我的 c# 对象的任何资源。以前,我在 LINQ 中工作,但我需要在没有 LINQ 的情况下进行。所以我想知道是否有人可以用一个例子来解释我如何在没有 LINQ 的情况下实现同样的目标。我用谷歌搜索但找不到适合初学者的好例子。任何帮助将不胜感激。

我有一个产品class

public class Product
{
    public int ProductId { get; private set; }
    public string Code { get; private set; }
    public string ProductName { get; private set; }

}

我想通过 WCF 服务调用和 ADO.NET

调用存储过程 usp_Get_Products

使用 LINQ,我会在 Service.svn.cs 文件中这样做

public List<Product> GetProducts(string productName,string productCode)
{
  TrsProductDataClassDataContext  db = new TrsProductDataClassDataContext();
  var products = db.usp_Get_Products(productName, productCode);
  return products.ToList();
}

如果您使用 [Serializable] 属性标记您的 class,那么 WCF 将为您进行翻译。您可以在配置中指定您希望如何序列化。 XML 是默认值,但要添加对 JSON 的支持,您需要做的就是将其添加到您的配置中

代码中的重要部分(我总是忘记它是 Serializable 还是 DataContract,所以我最终同时使用了两者):

[Serializable, DataContract]
public class Product
{
    public int ProductId { get; private set; }
    public string Code { get; private set; }
    public string ProductName { get; private set; }
}

WCF 配置中的重要一点是为 WCF 端点提供默认行为 JSON(如果需要):

  <behaviors>
    <endpointBehaviors>
      <behavior name="setJsonDefault" >
        <webHttp defaultOutgoingResponseFormat="Json" />
      </behavior>
    </endpointBehaviors>
  </behaviors>

然后您只需将该行为应用到您的端点(而非服务)。您现在可以将其作为客户端配置应用于您的存储过程,它应该可以工作。只需创建一个客户端即可。