XML для SQL, используя Linq или простой с четким кодом - PullRequest
0 голосов
/ 29 декабря 2010

Мне нужно сохранить на сервере SQL данные из файла XML с выводом, как: с корневыми приведениями:

<casts>
   <dirfilms>
      <dirid>AaB</dirid>
      <is>A.Bennett</is>
      <castnote>Actors and notes.</castnote>
      <filmc>
         <m>
            <f>AaB10</f>
            <t>A Private Function</t>
            <a>Michael Palin</a>
            <p>Und</p>
            <r>podiatrist</r>
         </m>
         <m>
            <f>AaB10</f>
            <t>A Private Function</t>
            <a>Maggie Smith</a>
            <p>Und</p>
            <r>ambitious wife</r>
            <awards>
               <award>BFA</award>
            </awards>
         </m>
         <m>
            <f>AaB10</f>
            <t>A Private Function</t>
            <a>Denholm Elliott</a>
            <p>Und</p>
            <r/>
            <awards>
               <award>BFA</award>
            </awards>
         </m>
         <m>
            <f>AaB10</f>
            <t>A Private Function</t>
            <a>Richard Griffiths</a>
            <p>Und</p>
            <r/>
         </m>
         ... (more nodes snipped) ...
      </filmc>
   </dirfilms>
</casts>

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Использовать XML в качестве типа столбца в базе данных. Создайте отображение linq2sql (файл .dbml) и используйте что-то вроде:

        XElement xml = XElement.Load(@"c:\myXml.xml");
        using (var context = new MyDataContext(connectionStr))
        {
            var entity = new MyTable{XML = xml};
            context.MyTables.InsertOnSubmit(entity);
            context.SubmitChanges();
        }
1 голос
/ 29 декабря 2010

Мое предложение для SQL Server 2008:

XDocument xmlDoc = XDocument.Load(@"C:\myXmlFile.xml");

using (SqlConnection conn = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"))
{
    conn.Open();

    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "INSERT INTO MyTable (MyXmlColumn) VALUES (@XmlColumnParam);";
        cmd.Parameters.AddWithValue("@XmlColumnParam", xmlDoc.ToString());

        cmd.ExecuteNonQuery();
    }
}

Столбец MyXmlColumn должен иметь формат nvarchar (MAX) или лучше XML, чтобы гарантировать, что данные, которые вставляются как допустимый XML.

...