来自LINQ Query for SqlBulkCopy的Datareader

时间:2013-06-24 07:36:05

标签: c# linq anonymous-types sqlbulkcopy datareader

我正在使用这个库:

Link to EntityDataReader

将xml解析中的一些linq查询结果放到一个带有sqlbulkcopy的数据库中,该数据库使用数据引导器直接放置数据而不使用数据表或此类数据结构。

我无法实现它。

这是我到目前为止写的代码没有任何成功:

XDocument xdoc = XDocument.Parse(str_XmlToParse);

            //ORDINI

            IEnumerable<XDocument> xdod;

            var orders = from c in xdoc.Descendants("ordersdata").AsEnumerable().Descendants("order").AsEnumerable()
                         select new
                         {
                             Client_ID = (string)c.Element("Client").Element("ID"),
                             Doc_ID = (string)c.Element("ord_ID"),
                             Doc_data = (DateTime)c.Element("ord_datetime"),
                         };
      IDataReader dr = orders.AsDataReader();

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();
                using (SqlTransaction tran = con.BeginTransaction())
                {
                    var newOrders =
                            from i in Enumerable.Range(0, totalToSend)
                            select new Order
                            {
                                customer_name = "Customer " + i % 100,
                                quantity = i % 9,
                                order_id = i,
                                order_entry_date = DateTime.Now
                            };

                    SqlBulkCopy bc = new SqlBulkCopy(con,
                      SqlBulkCopyOptions.CheckConstraints |
                      SqlBulkCopyOptions.FireTriggers |
                      SqlBulkCopyOptions.KeepNulls, tran);

                    bc.BatchSize = 1000;
                    bc.DestinationTableName = "order_queue";
                    bc.WriteToServer(newOrders.AsDataReader());

                    tran.Commit();
                }
                con.Close();

主要是该库示例中的内容的副本。

我甚至不能正确理解他们所有奇怪的铸件发生了什么,但我需要它才能发挥作用。 (相信我,我试着理解)

我一直收到这个错误:

  

错误1'System.Collections.Generic.IEnumerable AnonymousType#1&gt;'不   不包含'AsDataReader'的定义,也没有扩展方法   'AsDataReader'接受第一个类型的参数   'System.Collections.Generic.IEnumerable AnonymousType#1&gt;'可能   发现(您是否缺少using指令或程序集引用?)

这是什么?我该如何解决?

由于

1 个答案:

答案 0 :(得分:2)

好吧,基本上错误说你不能应用方法&#34; AsDataReader&#34;参数a&#34; IEnumerable&#34;对象,因为没有这种定义的方法。如果它可能会有所帮助,请尝试在引用中添加DLL&#34; System.Data.Entity&#34;和System.Data.EntityClient