我需要一些关于ADO.NET中强类型数据集的专家建议,这些数据集是由Visual Studio生成的。以下是详细信息。谢谢。
无法隐式转换类型“PL.WebServiceLayerReference.NorthwindDataSet”为“BL.NorthwindDataSet” e:\ My Documents \ Visual Studio 2008 \ Projects \ DataSetWebServiceExample \ PL \ Form1.cs
两个数据集相同,但由于我从不同位置添加了引用,因此我认为出现了上述错误。
因此,我添加了对项目1(定义数据集)到项目3(UI)的引用,并使用Web服务获取DataSet并将其分配给正确的类型,现在当运行项目3(具有Web表单)时,我会收到以下运行时异常。
System.InvalidOperationException: XML文档中存在错误(1, 5058)。 ---> System.Xml.Schema.XmlSchemaException: 元素 'http://tempuri.org/NorthwindDataSet.xsd:Customers' 的多个定义导致内容模型变得不明确。必须形成一个内容模型,以便在验证元素信息项序列期间,可以逐个验证该序列中的每个项所包含的直接、间接或隐式包含其内部的粒子,而不需要检查该项的内容或属性,也不需要关于其余序列中的项的任何信息。
我认为这可能是由于一些交叉引用错误造成的。
我的问题是,是否有一种方式可以使用Visual Studio生成的DataSets,在所有层中都可以使用相同的DataSet(进行重用),但将Table Adapter逻辑分离到数据访问层,以使前端通过Web服务抽象出所有这些?
我想编写一个N层应用程序,其中演示层在C# / Windows表单中,业务层是Web服务,数据访问层是SQL数据库。
因此,我使用Visual Studio 2005,并在解决方案中创建了3个项目。
项目1是数据访问层。在这个项目中,我使用Visual Studio数据集生成器创建了一个强类型数据集和表适配器(为了测试,我在Northwind的客户表上创建了这个)。数据集被称为NorthWindDataSet,里面的表是CustomersTable。
项目2有Web服务,仅公开1个方法GetCustomersDataSet。这使用项目1库的表适配器填充数据集并将其返回给调用者。为了能够使用NorthWindDataSet和表适配器,我添加了对项目1的引用。
项目3是一个Windows窗体应用程序,它将Web服务作为引用,并调用该服务以获取数据集。
无法隐式转换类型“PL.WebServiceLayerReference.NorthwindDataSet”为“BL.NorthwindDataSet” e:\ My Documents \ Visual Studio 2008 \ Projects \ DataSetWebServiceExample \ PL \ Form1.cs
两个数据集相同,但由于我从不同位置添加了引用,因此我认为出现了上述错误。
因此,我添加了对项目1(定义数据集)到项目3(UI)的引用,并使用Web服务获取DataSet并将其分配给正确的类型,现在当运行项目3(具有Web表单)时,我会收到以下运行时异常。
System.InvalidOperationException: XML文档中存在错误(1, 5058)。 ---> System.Xml.Schema.XmlSchemaException: 元素 'http://tempuri.org/NorthwindDataSet.xsd:Customers' 的多个定义导致内容模型变得不明确。必须形成一个内容模型,以便在验证元素信息项序列期间,可以逐个验证该序列中的每个项所包含的直接、间接或隐式包含其内部的粒子,而不需要检查该项的内容或属性,也不需要关于其余序列中的项的任何信息。
我认为这可能是由于一些交叉引用错误造成的。
我的问题是,是否有一种方式可以使用Visual Studio生成的DataSets,在所有层中都可以使用相同的DataSet(进行重用),但将Table Adapter逻辑分离到数据访问层,以使前端通过Web服务抽象出所有这些?
如果我手写代码,就会失去数据集生成器所提供的好处,而且如果以后添加了列,我还需要手动添加等等,因此我希望尽可能多地使用Visual Studio向导。