我需要某人在以下方面的专业知识:
我正在为需要在它和他们的 .NET 1.1 WinForms 应用程序之间同步 30 多个表的客户端构建一个面向 Web 的系统。为了我们双方的理智,为了尽量减少我们之间的互动,我建议使用 XML,就像这样
SELECT *
FROM table1
FOR XML AUTO, XMLDATA
需要注意的是,我需要主键在源数据库和目标数据库之间保持相同。有没有一种优雅的方式来导入 XML?每次有数据同步时,我不想编写丑陋的 SQL 来删除和重新创建表和关系。有没有办法通过 ADO.NET 或 Entity Framework 3 告诉数据库“看,这是您的数据,请使用它而不是您当前拥有的数据”?
这是导出的 XML 的示例:
<taxGroup>
<Schema name="Schema29" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="taxGroup" content="empty" model="closed">
<AttributeType name="taxGroupId" dt:type="i8"/>
<AttributeType name="regionId" dt:type="i8"/>
<AttributeType name="description" dt:type="string"/>
<AttributeType name="percentage" dt:type="number"/>
<AttributeType name="exportNumber" dt:type="string"/>
<attribute type="taxGroupId"/>
<attribute type="regionId"/>
<attribute type="description"/>
<attribute type="percentage"/>
<attribute type="exportNumber"/>
</ElementType>
</Schema>
<taxGroup xmlns="x-schema:#Schema29" taxGroupId="38000001" regionId="1482000001" description="VAT" percentage="0.1400" exportNumber=""/>
<taxGroup xmlns="x-schema:#Schema29" taxGroupId="38000002" regionId="1482000001" description="VAT2" percentage="0.1700" exportNumber=""/>
</taxGroup>
注意:这两个数据库不能互相访问。传输是通过 Secure HTTPRequest 进行的。
更新 2:Winforms 应用程序使用 SQL2000,这使得使用同步框架变得不可能,显然......
更新 3:让我们认为我不得不以这种方式做事。.NET 应用程序部署在各种第 3 方站点,每个站点都有单独的数据库副本并连接到 Web 应用程序的单独实例。它是一个经销商包,用于所有意图和目的:一个实体店面组件和一个在线商店组件。一些第三方拒绝从 SQL2000 升级。