Can't get XSD to generate DataSet primary keys

H

Howard Swope

[.Net 2.0, VS2005 SP1, MSDataSetGenerator used through IDE]

No matter how I shape my XSD, I can't get it to create primary keys in my
data set. I have looked at tons of examples, followed them to the letter,
but still no go. When I merge my data sets I get duplicate records. If I go
in and add the PrimaryKey to the DataSet based classes that were generated
by the tool everything works. I just can't get the tool to create them. Help
Please.

(One thing I did notice that was weird was that in VisualStudio intellisense
was available for msdata:whatever, all the attributes I saw in the examples
were available except msdata:primaryKey).

Anyway here is my XSD

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="SensorDataSet">

<xs:element name="Type" type="xs:string" />

<xs:element name="Timestamp" type="xs:string" />

<xs:element name="Start" type="xs:decimal" />

<xs:element name="Speed" type="xs:byte" />

<xs:element name="OrderNumber" type="xs:short" />

<xs:element name="NameDescription" type="xs:string" />

<xs:element name="Name" type="xs:string" />

<xs:element name="Longitude" type="xs:decimal" />

<xs:element name="Latitude" type="xs:decimal" />

<xs:element name="ItsRoadwayDescription" type="xs:string" />

<xs:element name="Id" type="xs:string" />

<xs:element name="Description" type="xs:string" />

<xs:element name="Sensor">

<xs:complexType>

<xs:sequence>

<xs:element ref="Type" />

<xs:element ref="OrderNumber" />

<xs:element ref="Id" />

<xs:element ref="Description" />

<xs:element ref="ItsRoadwayDescription" />

<xs:element ref="Latitude" />

<xs:element ref="Longitude" />

<xs:element ref="Speed" />

<xs:element ref="RouteId" />

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="RouteId" type="xs:string" />

<xs:element name="Route">

<xs:complexType>

<xs:sequence>

<xs:element ref="Id" />

<xs:element ref="Name" />

<xs:element ref="Description" />

<xs:element ref="NameDescription" />

<xs:element ref="Start" />

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="SensorFeed">

<xs:complexType>

<xs:sequence>

<xs:element ref="Sensor" maxOccurs="unbounded" />

<xs:element ref="Route" maxOccurs="unbounded" />

<xs:element ref="Timestamp" minOccurs="1"
maxOccurs="1" />

</xs:sequence>

</xs:complexType>

<xs:key name="SensorPrimaryKey" msdata:primaryKey="true"
msdata:ConstraintName="SensorPrimaryKey">

<xs:selector xpath=".//Sensor" />

<xs:field xpath="Id" />

</xs:key>

<xs:key name="RoutePrimaryKey" msdata:primaryKey="true"
msdata:ConstraintName="RoutePrimaryKey">

<xs:selector xpath=".//Route" />

<xs:field xpath="Id" />

</xs:key>

<xs:keyref name="SensorRouteForeignKey" refer="RoutePrimaryKey">

<xs:selector xpath=".//Sensor" />

<xs:field xpath="RouteId" />

</xs:keyref>

</xs:element>

</xs:schema>



Thanks
 
H

Howard Swope

I just got fed up and simplified the .xsd as much as possible, I inlined all
the refs, and then it generated the primary keys. Yeah...

Howard Swope said:
[.Net 2.0, VS2005 SP1, MSDataSetGenerator used through IDE]

No matter how I shape my XSD, I can't get it to create primary keys in my
data set. I have looked at tons of examples, followed them to the letter,
but still no go. When I merge my data sets I get duplicate records. If I
go in and add the PrimaryKey to the DataSet based classes that were
generated by the tool everything works. I just can't get the tool to
create them. Help Please.

(One thing I did notice that was weird was that in VisualStudio
intellisense was available for msdata:whatever, all the attributes I saw
in the examples were available except msdata:primaryKey).

Anyway here is my XSD

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="SensorDataSet">

<xs:element name="Type" type="xs:string" />

<xs:element name="Timestamp" type="xs:string" />

<xs:element name="Start" type="xs:decimal" />

<xs:element name="Speed" type="xs:byte" />

<xs:element name="OrderNumber" type="xs:short" />

<xs:element name="NameDescription" type="xs:string" />

<xs:element name="Name" type="xs:string" />

<xs:element name="Longitude" type="xs:decimal" />

<xs:element name="Latitude" type="xs:decimal" />

<xs:element name="ItsRoadwayDescription" type="xs:string" />

<xs:element name="Id" type="xs:string" />

<xs:element name="Description" type="xs:string" />

<xs:element name="Sensor">

<xs:complexType>

<xs:sequence>

<xs:element ref="Type" />

<xs:element ref="OrderNumber" />

<xs:element ref="Id" />

<xs:element ref="Description" />

<xs:element ref="ItsRoadwayDescription" />

<xs:element ref="Latitude" />

<xs:element ref="Longitude" />

<xs:element ref="Speed" />

<xs:element ref="RouteId" />

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="RouteId" type="xs:string" />

<xs:element name="Route">

<xs:complexType>

<xs:sequence>

<xs:element ref="Id" />

<xs:element ref="Name" />

<xs:element ref="Description" />

<xs:element ref="NameDescription" />

<xs:element ref="Start" />

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="SensorFeed">

<xs:complexType>

<xs:sequence>

<xs:element ref="Sensor" maxOccurs="unbounded" />

<xs:element ref="Route" maxOccurs="unbounded" />

<xs:element ref="Timestamp" minOccurs="1"
maxOccurs="1" />

</xs:sequence>

</xs:complexType>

<xs:key name="SensorPrimaryKey" msdata:primaryKey="true"
msdata:ConstraintName="SensorPrimaryKey">

<xs:selector xpath=".//Sensor" />

<xs:field xpath="Id" />

</xs:key>

<xs:key name="RoutePrimaryKey" msdata:primaryKey="true"
msdata:ConstraintName="RoutePrimaryKey">

<xs:selector xpath=".//Route" />

<xs:field xpath="Id" />

</xs:key>

<xs:keyref name="SensorRouteForeignKey"
refer="RoutePrimaryKey">

<xs:selector xpath=".//Sensor" />

<xs:field xpath="RouteId" />

</xs:keyref>

</xs:element>

</xs:schema>



Thanks
--
Howard Swope [hswope.swopeATnavteqDOTcom]
Senior Software Developer
Media Development
Navteq Traffic [http://www.traffic.com]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top