使用 SQL 服务器存储过程存储 WCF 休息请求数据
Storing WCF rest request data with SQL Server stored procedure
我的 WCF 服务中有一个简单的接口,其中一种方法获取 myRequest
参数
public interface IService
{
[OperationContract]
string MyOperation(myRequest request);
}
当我从客户端发布数据时,内容类型为 application/json
,因此请求正文自动反序列化为 myRequest
对象。
myRequest
是一个 WCF DataContract
:
[DataContract]
public class myRequest
{
string id;
string name;
List<Phone> phones
[DataMember]
public string Name { get; set; }
[DataMember]
public string ID { get; set; }
[DataMember]
public List<Phone> Phones { get; set; }
}
和Phone
class
public class Phone
{
public string Number { get; set; }
public string Type { get; set; }
public override string ToString()
{
return "[" + Number + "," + Type + "]";
}
}
好的,现在我想将请求数据存储到本地 SQL 服务器数据库中,为此我需要使用存储过程。我想将 myRequest
对象发送到 SQL 服务器并让它处理 insert/update(我想我必须保留 2 个表:人员和电话)。
我没有太多关于存储过程的背景知识,但我很乐意从你们那里得到解决这个问题的正确方法。
谢谢。
您无法将复杂对象传递给数据库,使用 CLR 存储过程、旧的普通存储过程 或其他东西也没关系。
您需要将您的请求转换为可以传递给数据库的内容。如果您知道如何在 T-Sql 中操作 XML(这可能有点棘手),那么 XML 序列化是这项工作的理想人选。
我认为放弃使用存储过程的想法并采用其他东西(如 EF)对你来说会更好。
我的 WCF 服务中有一个简单的接口,其中一种方法获取 myRequest
参数
public interface IService
{
[OperationContract]
string MyOperation(myRequest request);
}
当我从客户端发布数据时,内容类型为 application/json
,因此请求正文自动反序列化为 myRequest
对象。
myRequest
是一个 WCF DataContract
:
[DataContract]
public class myRequest
{
string id;
string name;
List<Phone> phones
[DataMember]
public string Name { get; set; }
[DataMember]
public string ID { get; set; }
[DataMember]
public List<Phone> Phones { get; set; }
}
和Phone
class
public class Phone
{
public string Number { get; set; }
public string Type { get; set; }
public override string ToString()
{
return "[" + Number + "," + Type + "]";
}
}
好的,现在我想将请求数据存储到本地 SQL 服务器数据库中,为此我需要使用存储过程。我想将 myRequest
对象发送到 SQL 服务器并让它处理 insert/update(我想我必须保留 2 个表:人员和电话)。
我没有太多关于存储过程的背景知识,但我很乐意从你们那里得到解决这个问题的正确方法。
谢谢。
您无法将复杂对象传递给数据库,使用 CLR 存储过程、旧的普通存储过程 或其他东西也没关系。
您需要将您的请求转换为可以传递给数据库的内容。如果您知道如何在 T-Sql 中操作 XML(这可能有点棘手),那么 XML 序列化是这项工作的理想人选。
我认为放弃使用存储过程的想法并采用其他东西(如 EF)对你来说会更好。