Hej! Tackar för svaret, ska kolla detta så snart jag kan(ikväll). Jag återkommer med resultat. Då har jag testat och tyvär fungerade inte det, gameDs. har ingen item. Däremot fungerar följande: Typade dataset fejkar strongly typed iaf. .Items är bara i vb.net ja med skillnaden att det där sista inte ger kompileringsfel för han ;) fullt å fult.. om man vill representera både DbNull och Integer i en variabel, fanns det inget annat är Object (före nullable types). Visst det kostar ju några klockcykler extra med ref.types men lösningen är ju egentligen mer korrekt än att säga att alla nullade ints är = 0. Det finns andra varianter de skulle kunnat använda innan nullable types (och generics). Men det är oförlåtligt att DataSets i 2.0 inte använder dem. Det är tom så att DataSets i 2.0 är sämre på DBNull än 1.1. tyvärr fungerar inte:XML och typade Dataset?
Jag har följande XML fil
<?xml version="1.0" encoding="iso-8859-2" ?>
- <games>
- <game gameid="2">
<yearpublished>1999</yearpublished>
<minplayers>3</minplayers>
<maxplayers>4</maxplayers>
<playingtime>0</playingtime>
<name primary="true">MyGame</name>
- <designer designerid="287">
<name>Kalle</name>
</designer>
- <publisher publisherid="20">
<name>MyPublisher</name>
<homepage>www.mypage.se</homepage>
</publisher>
- <publisher publisherid="64">
<name>Kalle</name>
</publisher>
<description></description>
</game>
</games>
Genom att ange följande kommando så skapas en xsd fil som innehåller XML definitionen för min XML fil:
xsd.exe myGame.xml
Vidare använder jag xsd på följande vis för att få ett typat dataset
xsd.exe myGame.xsd /d
Jag får då en myGame.cs fil som jag lägger in i min App_code i mitt ASP.NET projekt, på så vis får jag tillgång till det typade datasetet.
Jag vill nu läsa in en XML fil med mitt dataset och det gör jag på följande vis:
games gameDs = new games();
gameDs.ReadXml("Adressen till XML tjänsten");
Detta fungerar bra, det typade datasetet fylls.
MEN när jag tittar i det så hänger jag inte alls med på strukturen som ser ut på följande vis:
gameDs.game
gameDs.game.gameidColumn
gameDs.game.yearpublishedColumn
gameDs.game.minplayersColumn
gameDs.game.maxplayersColumn
gameDs.game.playingtimeColumn
gameDs.game.gameidColumn
gameDs.game.descriptionColumn
gameDs.game.Och en väldig massa annat
gameDs.name.game_IdColumn
gameDs.name.primaryColumn
gameDs.name.name_TextColumn
gameDs.name.Och en väldig massa annat
gameDs.designer.nameColumn
gameDs.designer.designeridColumn
gameDs.designer.game_IdColumn
gameDs.designer.Och en väldig massa annat
gameDs.publisher.nameColumn
gameDs.publisher.homepageColumn
gameDs.publisher.publisheridColumn
gameDs.publisher.game_IdColumn
gameDs.publisher.Och en väldig massa annat
Hur får jag nu ut informationen? det verkar ju bara vara Kolumnen jag får tag på ?
Jag har ex provat:
gameDs.game.gameidColumn.ToString()
Vilket returnerar "gameid"(namnet på kollumnen)
Genom följande:
gameDs.game.gameidColumn[0]
Får jag ut rätt värde men detta kan jag endast köra i Watch, skriver jag det i koden så får jag
Cannot apply indexing with [] to an expression of type 'System.Data.DataColumn'
Så frågan är hur jag kommer åt mina värden?
Sv:XML och typade Dataset?
Sv: XML och typade Dataset?
gameDs.game.Rows[0]["gameid"]
men detta känns inte strong typed?Sv: XML och typade Dataset?
Åven när du använder ds.Game.Items[0].gameID
så är den ett "Object" i grunden och gör en typkonvertering varje gång du anropar gameID proppen. Riktigt fult faktiskt.Sv:XML och typade Dataset?
använder du C# så är .items din indexer:
ds.Game[0].gameID Sv:XML och typade Dataset?
Sv:XML och typade Dataset?
Sv: XML och typade Dataset?
Dessutom, dbnulls vara eller inte vara. Man blir helt trött på dem. Null är null i applikationen. Om null kom från databasen eller inte är ointressant.Sv: XML och typade Dataset?
ds.Game[0].gameID
Vilket jag tycker är konstigt efter som det ska vara strong typed, istället så är bara en del strong typed(ds.game). Så för att få ut datan måste jag göra följande:
ds.Game.Rows[0]["gameid"]
E det meningen att det ska fungera på det viset?