我正在尝试使用C#(Visual Studio 2010)中的SQLXMLBulkLoad对象模型将XML数据批量转换为SQL Server 2008 Express。
我的问题是我被困在关系中。请考虑以下带注释的XSD文件:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:appinfo>
<sql:relationship name="CompanyEmployeeRel"
parent="Company"
parent-key="ID"
child="Employee"
child-key="CompanyID"/>
</xs:appinfo>
</xs:annotation>
<xs:element name="Employee" sql:key-fields="ID">
<xs:complexType>
<xs:attribute name="ID" sql:datatype="uniqueidentifier"/>
<xs:attribute name="FirstName" sql:datatype="nvarchar(255)" />
<xs:attribute name="LastName" sql:datatype="nvarchar(255)"/>
</xs:complexType>
</xs:element>
<xs:element name="Company" sql:key-fields="ID">
<xs:complexType>
<xs:sequence>
<xs:element ref="Employee" sql:relationship="CompanyEmployeeRel"/>
</xs:sequence>
<xs:attribute name="ID" sql:datatype="uniqueidentifier"/>
<xs:attribute name="Name" sql:datatype="nvarchar(100)"/>
</xs:complexType>
</xs:element>
</xs:schema>
然后我让SQLXMLBulkLoad为我创建数据库架构。这导致以下两个表:
alt text http://dl.dropbox.com/u/17384/Bildschirmfoto-3.png
主键和外键都是正确的;但我的问题是带下划线的列。我指定Company表的ID列应该是uniqueidentifier,但它是nvarchar(40)。 Name列也是nvarchar(40),但我指定它应该是nvarchar(100)。
有人知道为什么会这样吗?我可以做些什么来对付这个问题?
此致