Share via


Load Entity data model from xml

Question

Tuesday, April 19, 2011 2:57 PM

I am new the entity data model world but from what I am reading this is the way of the future - so please forgive me if this question is simple or in the wrong place.

My app retrieves everything from a webservice and in the past I would query the xml in memory and store the values in a dataset for binding.  How can I I do something similar with the entity model?  That is query xml with LINQ and place the values in an entity model to databind.

All replies (4)

Thursday, June 9, 2011 9:22 PM ✅Answered

Hello again:)

Just a quick simply sample for you——

Let's say that your xml contents look like this:

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies,
      an evil sorceress, and her own childhood to become queen
      of the world.</description>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
      <description>After the collapse of a nanotechnology
      society in England, the young survivors lay the
      foundation for a new society.</description>
   </book>
   <book id="bk104">
      <author>Corets, Eva</author>
      <title>Oberon's Legacy</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2001-03-10</publish_date>
      <description>In post-apocalypse England, the mysterious
      agent known only as Oberon helps to create a new life
      for the inhabitants of London. Sequel to Maeve
      Ascendant.</description>
   </book>
   <book id="bk105">
      <author>Corets, Eva</author>
      <title>The Sundered Grail</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2001-09-10</publish_date>
      <description>The two daughters of Maeve, half-sisters,
      battle one another for control of England. Sequel to
      Oberon's Legacy.</description>
   </book>
   <book id="bk106">
      <author>Randall, Cynthia</author>
      <title>Lover Birds</title>
      <genre>Romance</genre>
      <price>4.95</price>
      <publish_date>2000-09-02</publish_date>
      <description>When Carla meets Paul at an ornithology
      conference, tempers fly as feathers get ruffled.</description>
   </book>
   <book id="bk107">
      <author>Thurman, Paula</author>
      <title>Splish Splash</title>
      <genre>Romance</genre>
      <price>4.95</price>
      <publish_date>2000-11-02</publish_date>
      <description>A deep sea diver finds true love twenty
      thousand leagues beneath the sea.</description>
   </book>
   <book id="bk108">
      <author>Knorr, Stefan</author>
      <title>Creepy Crawlies</title>
      <genre>Horror</genre>
      <price>4.95</price>
      <publish_date>2000-12-06</publish_date>
      <description>An anthology of horror stories about roaches,
      centipedes, scorpions  and other insects.</description>
   </book>
   <book id="bk109">
      <author>Kress, Peter</author>
      <title>Paradox Lost</title>
      <genre>Science Fiction</genre>
      <price>6.95</price>
      <publish_date>2000-11-02</publish_date>
      <description>After an inadvertant trip through a Heisenberg
      Uncertainty Device, James Salway discovers the problems
      of being quantum.</description>
   </book>
   <book id="bk110">
      <author>O'Brien, Tim</author>
      <title>Microsoft .NET: The Programming Bible</title>
      <genre>Computer</genre>
      <price>36.95</price>
      <publish_date>2000-12-09</publish_date>
      <description>Microsoft's .NET initiative is explored in
      detail in this deep programmer's reference.</description>
   </book>
   <book id="bk111">
      <author>O'Brien, Tim</author>
      <title>MSXML3: A Comprehensive Guide</title>
      <genre>Computer</genre>
      <price>36.95</price>
      <publish_date>2000-12-01</publish_date>
      <description>The Microsoft MSXML3 parser is covered in
      detail, with attention to XML DOM interfaces, XSLT processing,
      SAX and more.</description>
   </book>
   <book id="bk112">
      <author>Galos, Mike</author>
      <title>Visual Studio 7: A Comprehensive Guide</title>
      <genre>Computer</genre>
      <price>49.95</price>
      <publish_date>2001-04-16</publish_date>
      <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are
      integrated into a comprehensive development
      environment.</description>
   </book>
</catalog>

And let's say suppose you've got the same structure (an empty datatable in your db, and you've mapped it in the EF's file)——

var result = from e in XDocument.Load("xxx.xml").Descedants("book")

                 select new

                 {

                     BookId = e.Attribute("id").Value,

                     Author = e.Element("author").Value,

                     …………………… 

                 };
foreach(var item in result)

{

       //Suppose your EF's model's name is Book, then——

      Book book = new Book{BookId=item.BookId,BookAuthor=item.Author,……};

      XXXEntities.AddToBook(book);

}

XXXEntities.SaveChanges();


Thursday, April 21, 2011 9:55 PM

Hi:)

If you want to load data contents into a DataTable, there are many ways:

1) Just Use DataSet.Load(Your Xml File) and then use DataSet.Tables[0] you can get a nice DataTable ful-filled with data contents.

2) Just use XDocument to read out specific nodes' values and assign into a DataTable……

However, I'm not quite sure what you mean by saying"How can I I do something similar with the entity model?"

Would you mind offering us your EF's model, and tell use what you really want to do step by step?

Thx

PS:In my mind, EF can be used directly, no need to install them into DataTable, it's shown in the form of a model collection with LINQ. See related articles: http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx


Thursday, June 9, 2011 11:21 AM

Not sure why that was tagged as an answer, no offense - but I mentioned I'm already loading xml into a dataset, LINQ along with a typed table converter are pretty cool.

But again, my original question - How can I query an xml file with LINQ and store the result in an entity model.  If you need a model to work with, create one that looks like this (below).

ClientCode

ClientName

ClientAddr1

 


Friday, July 15, 2011 12:04 PM

Sorry for the delay,

I think this has answered my question though, but just want to confirm.  Basically I can't use the entity framework unless it is tied to a Database.