C# 为什么我们要将数据集代码与数据访问代码分开?

C# 为什么我们要将数据集代码与数据访问代码分开?,c#,wcf,n-tier-architecture,dataset-designer,C#,Wcf,N Tier Architecture,Dataset Designer,在本文之后,我一直在使用分层方法转换我的WinForm应用程序: 在本文中,它建议创建两个独立的类库,一个用于类型化数据集类,另一个用于DataAccess。我认为这两个实体在逻辑上是相当耦合的,那么为什么要将它们分开呢 您希望能够引用强类型数据模型,而无需引用任何较低级别的数据访问API。您的消费代码不应该知道数据模型的来源。您可能希望在UI层中使用数据模型。您的UI层只需要了解模型,而不需要了解模型如何填充数据。您希望能够引用强类型数据模型,而无需引用任何较低级别的数据访问API。您的消费代

在本文之后,我一直在使用分层方法转换我的WinForm应用程序:


在本文中,它建议创建两个独立的类库,一个用于类型化数据集类,另一个用于DataAccess。我认为这两个实体在逻辑上是相当耦合的,那么为什么要将它们分开呢

您希望能够引用强类型数据模型,而无需引用任何较低级别的数据访问API。您的消费代码不应该知道数据模型的来源。您可能希望在UI层中使用数据模型。您的UI层只需要了解模型,而不需要了解模型如何填充数据。

您希望能够引用强类型数据模型,而无需引用任何较低级别的数据访问API。您的消费代码不应该知道数据模型的来源。您可能希望在UI层中使用数据模型。您的UI层只需要了解模型,而不需要了解模型是如何填充数据的。

除了使数据层易于替换之外,这种方法还允许您编写单元测试,而无需涉及数据库。例如,您可以创建一个简单的模型,该模型将提供数据并填充数据类以进行测试。非常正确。我不想将单元测试引入其中,但这是一个很好的观点。单元测试是易于更换的数据层最常提到的好处,但它值得记住其他好处。我认为很多开发人员低估了在不重写大量代码的情况下切换到不同数据存储方法的有用性。您可以从使用MSSQL的服务器转移到只支持Oracle的服务器,也可以制作使用本地存储、XML文件或任何您喜欢的东西的脱机版本。除了使数据层易于更换之外,这种方法还允许您编写单元测试,而不涉及数据库。例如,您可以创建一个简单的模型,该模型将提供数据并填充数据类以进行测试。非常正确。我不想将单元测试引入其中,但这是一个很好的观点。单元测试是易于更换的数据层最常提到的好处,但它值得记住其他好处。我认为很多开发人员低估了在不重写大量代码的情况下切换到不同数据存储方法的有用性。您可以从使用MSSQL的服务器转移到只支持Oracle的服务器,也可以制作一个使用本地存储、XML文件或任何您喜欢的脱机版本。