在WCF应用程序中创建数据模型应该使用什么方法?
在创建一个用于WCF应用程序中的数据模型时,应该采用什么方法?
首先,我认为你需要明确你想使用的技术。你一直在说DataSet,我会假设你被迫使用经典的ADO.NET数据库编程。如果是这种情况,构建对象的顺序并不重要。
你的应用程序将利用从ADO.NET DataSet中提取出来的对象,或者你可以使用较新的Load<Type>()
功能返回提取出来的对象。你首先需要构建你想要返回的对象,这些对象应该与数据库的考虑无关。(构建数据库模型的时间和位置不重要,你现在或以后都可以做...持久性问题不应干扰对象建模和业务逻辑)
接下来,你需要构建一个用于返回对象和定义查询的存储库。不再重复输入这些内容,我会给你一些链接供你阅读。
然后,你可以使用DataSet来提取对象,无论是从SQL查询还是从存储过程中提取。
然而,我建议你研究一下Entity Framework 5RC或Entity Framework 4.1+ Code First来做这个。ADO.NET不是最好的方法。这里有大量关于如何在Code First中工作的数据,在这条路上我会给你一两个链接,让你开始这个选项。
我忘记提到的一点是,你不能也不应该从WCF返回一个活动的DataSet。有一些方法可以让你这样做,但是出于很多原因,我强烈建议你不要这样做。WCF应该返回一个DTO(数据传输对象),它完全独立于持久性问题,只包含纯粹的数据,没有逻辑。这样可以在不考虑在.NET环境下有人拥有对象DTO并被迫在这个环境下操作的情况下进行序列化和反序列化。WCF服务应该能够被任何支持SOAP的语言消费,并在该语言中将其反序列化为对象。
WCF的响应实际上只是XML序列化的对象,你应该始终考虑在DTO中注入了哪些额外的问题,这些问题在任何WCF响应中都不存在。