Article ID: 316820
Article Last Modified on 3/10/2006
APPLIES TO
- Microsoft .NET Framework 1.1 Service Pack 1
- Microsoft Visual Studio .NET 2002 Professional Edition
This article was previously published under Q316820
This article refers to the following Microsoft .NET Framework Class Library namespace:
- System.Data
SYMPTOMS
When you try to read an Extensible Markup Language (XML) schema into a DataSet, the following duplicate name exception may be thrown when the XML Schema Definition language (XSD) derives and extends a column definition:
If you handle this exception within a try/catch block, you receive the following error message:
CAUSE
The DataSet is treating the column derivation and extension as if it were the definition of an entirely new column, with the same name as an existing column.
RESOLUTION
To avoid this exception, define a new element type with the attributes that you want, instead of deriving from and extending an existing element type.
STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section. This bug was corrected in Microsoft ADO.NET (included with the .NET Framework 1.1), and Microsoft Visual Studio .NET 2003, Professional Edition.
MORE INFORMATION
Steps to reproduce the behavior
Create a new XSD file named Test.xsd. Paste the following code into it:
<?xml version="1.0" standalone="yes"?> <xsd:schema id="MyDataSet" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:complexType name="columns" abstract="true"> <xsd:sequence> <xsd:element name="column1" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:element name="table1"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="columns"> <xsd:sequence> <xsd:element name="column1" msdata:ReadOnly="True" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:schema>
- Create a new Visual Basic .NET console application.
Paste the following code into the sub Main of Module1:
Dim ds As New DataSet() ds.ReadXmlSchema("C:\Test.xsd") 'Exception thrown here. Console.Write("Schema Loaded Successfuly") Console.Read()
- Change the string that is being passed in the call to ReadXML to reflect the path to the XML file that you created.
- Press F5 to run and compile the application. You receive the error message listed in the "Symptoms" section.
In order to avoid this exception being thrown, replace code in the XSD file with the following code that defines a new element with the attributes that you want, instead of deriving from an existing element:
<?xml version="1.0" standalone="yes" ?> <xsd:schema id="MyDataSet" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:element name="table1"> <xsd:complexType> <xsd:sequence> <xsd:element name="column1" type="xsd:string" msdata:ReadOnly="True" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
- Press F5 to run and compile the application. Output to the console confirms that the XSD schema was loaded successfully. Press ENTER to stop the running application, and then close the Console window.
REFERENCES
For more information about XML integration with ADO.NET, click the following article number to view the article in the Microsoft Knowledge Base:
313649 Roadmap for XML integration with ADO.NET
For more information about XML schemas in the .NET Framework, click the following article number to view the article in the Microsoft Knowledge Base:
313826 Roadmap for XML schemas in the .NET Framework
Additional query words: DuplicateNameException
Keywords: kbbug kbfix kbnofix kbsystemdata kbinterop kbvs2002sp1sweep KB316820