是否可以在Web服务中公开LinqToSQL生成的类

时间:2011-12-19 14:53:22

标签: web-services linq-to-sql wsdl

我正在制作asmx Web服务,并使用LinqToSQL来处理数据库。

对我来说,使用LinqToSQL生成的类作为参数或在Web方法中返回值似乎很容易。 像这样:

[WebMethod]
public OperationResult Meet_ListMeets(string clientToken, out meet[] meets)
{
    ServiceMeet s = new ServiceMeet(sqlCon, clientToken);
    return s.ListMeets(out meets);
}

其中“meet”是LinqToSQL类。 我发现meet类是作为WSDL复杂类型公开的,包括所有依赖项(例如,数据库中的外键所指示的其他类)。

主要问题是“以这种方式使用类是一种好习惯吗?”。安全性怎么样? 我应该使用包装类来隐藏我的实体结构吗?

1 个答案:

答案 0 :(得分:1)

这不是一个好习惯,而且你很可能在某些时候遇到问题。更不用说所有额外残留物的开销了。

我过去所做的就是制作一个“inbetween”模型,只需要我需要实际发送的字段,并在它们进入时将它们映射回真实对象。你可以进行映射手动或使用.NET的许多映射工具包之一(在NuGet中查看)。