Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在创建要在WCF应用程序中使用的数据模型时应该使用什么方法_C#_Asp.net_Wcf_Dataset_Webforms - Fatal编程技术网

C# 在创建要在WCF应用程序中使用的数据模型时应该使用什么方法

C# 在创建要在WCF应用程序中使用的数据模型时应该使用什么方法,c#,asp.net,wcf,dataset,webforms,C#,Asp.net,Wcf,Dataset,Webforms,我需要创建一个WCF服务应用程序,它将使用我的类库中的对象。这些对象需要从我的WCF应用程序中提供服务,并从ASP.NET中构建的web应用程序中使用 我必须使用dataset,但我不确定应该如何构建这个应用程序,以及应该以什么顺序构建所需的不同类。我应该先创建数据库模型,然后构建数据集对象,还是先构建对象,然后从创建的对象集创建数据模型。我还必须在此应用程序中使用存储过程,因此我必须能够在我将使用的任何设计方法中支持它们。首先,我认为您需要准确定义要使用的技术。您一直在说数据集,我认为您被迫使

我需要创建一个WCF服务应用程序,它将使用我的类库中的对象。这些对象需要从我的WCF应用程序中提供服务,并从ASP.NET中构建的web应用程序中使用


我必须使用dataset,但我不确定应该如何构建这个应用程序,以及应该以什么顺序构建所需的不同类。我应该先创建数据库模型,然后构建数据集对象,还是先构建对象,然后从创建的对象集创建数据模型。我还必须在此应用程序中使用存储过程,因此我必须能够在我将使用的任何设计方法中支持它们。

首先,我认为您需要准确定义要使用的技术。您一直在说数据集,我认为您被迫使用经典的ADO.NET数据库编程。如果是这种情况,那么构建对象的顺序实际上并不重要

您的应用程序将使用ADO.NET数据集中的对象,或者您可以使用
Load()
的更新功能返回水合对象。您首先要构建您想要返回的对象,这些对象应该独立于数据库考虑事项。(何时何地构建数据库模型无关紧要,可以现在或以后进行……持久性问题不应干扰对象建模和业务逻辑)

例如:

public class Book
{
     public string Title {get;set;}
     public DateTime PublicationDate {get;set;}
     public decimal Cost {get;set;}
     public virtual Author {get;set;}
}

public class Author
{
     public string Name {get;set;}
     public DateTime DateOfBirth {get;set;}
}
接下来,您将构建存储库以返回对象并定义查询。我将给你一些链接,让你阅读,而不是再次输入

然后,您可以使用数据集为对象添加水合物,不管它是来自SQL查询还是来自存储过程,都没有区别

但是

我建议您首先对EntityFramework5RC或EntityFramework4.1+代码进行一些研究。ADO.NET不是最好的方法。堆栈中有大量关于如何首先在代码内部工作的数据,但如果可以的话,我会给你们一两个链接,让你们沿着这条路径开始

我忘了提的东西 您不能也不应该从WCF返回实时数据集。有黑客允许你这样做,但我强烈建议你不要这样做有很多原因。WCF应该返回一个DTO(数据传输对象),它完全独立于持久性问题,并且只包含没有逻辑的数据。这样就可以序列化和反序列化,而不必担心有人拥有对象DTO并被迫在.NET环境下操作。WCF服务应该能够被任何支持SOAP的语言使用,并反序列化为该语言中的对象


<>来自WCF的响应本质上只是XML序列化的对象,您应该总是考虑注入到我的DTO中的其他关注点,这将不会在您的服务的消费者的任何WCF响应中存在。

我不确定您在问什么。你能详细说明一下吗?我需要创建相互关联的表,然后创建数据集,但我不知道先做哪个数据库,还是先编码。。。这就是问题所在……:)我会先创建一个EF模型。我基本上是根据你在评论中的反馈和我收集到的你想要做的事情重写了你的整个问题。您关心的不是WCF本身,而是您应该如何构建数据层以及WCF之外的通信应该如何运行。我希望澄清,以获得更好的回应,并提供了我自己的一个基础上,我相当肯定你正在寻找。祝你好运!