Я использую эту библиотеку:
чтобы вывести некоторые результаты запроса linq из XML-анализа в базу данных с помощью sqlbulkcopy, в которой нам нужен datareader для непосредственного ввода данных без использования данных или таких структур данных.
Я не могу его реализовать.
Это код, который я написал до сих пор без каких-либо успехов:
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>' не содержит определения для 'AsDataReader' и никакого метода расширения 'AsDataReader', принимающего первый аргумент типа 'System.Collections.Generic.IEnumerable AnonymousType # 1>' (вы не указали директиву использования или ссылку на сборку?)
Что это? Как это исправить?
благодаря
Ну, в основном ошибка говорит, что вы не можете применить метод «AsDataReader» с параметром «IEnumerable», потому что такого метода с этим определением не существует. Если это может помочь, попробуйте добавить в ссылки DLL «System.Data.Entity» и System.Data.EntityClient