Я следовал этому руководству о том, как выполнить пакетную вставку linq to sql.
http://www.codeproject.com/KB/linq/BulkOperations_LinqToSQL.aspx
Однако в моей базе данных есть поле datetime, и я получаю эту ошибку.
System.Data.SqlClient.SqlException был
необработанное сообщение = "преобразование не выполнено
при преобразовании даты и времени из
строка символов. "Source =". Net
SqlClient Data Provider "
ErrorCode = -2146232060 Класс = 16
LineNumber = 7 число = 241
Процедура = "spTEST_InsertXMLTEST_TEST"
Server = "" State = 1 StackTrace:
в System.Data.SqlClient.SqlConnection.OnError (SqlException
исключение, Boolean breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject
stateObj)
в System.Data.SqlClient.TdsParser.Run (RunBehavior
runBehavior, SqlCommand cmdHandler,
SqlDataReader dataStream,
BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject
stateObj)
Я не уверен, почему, когда я просто беру дату и время в сгенерированном XML-файле и вручную копирую его в SQL Server 2005, у него нет проблем с ним, и он прекрасно конвертируется.
Это мой ИП
CREATE PROCEDURE [dbo].[spTEST_InsertXMLTEST_TEST](@UpdatedProdData nText)
AS
DECLARE @hDoc int
exec sp_xml_preparedocument @hDoc OUTPUT,@UpdatedProdData
INSERT INTO UserTable(CreateDate)
SELECT XMLProdTable.CreateDate
FROM OPENXML(@hDoc, 'ArrayOfUserTable/UserTable', 2)
WITH (
CreateDate datetime
) XMLProdTable
EXEC sp_xml_removedocument @hDoc
C # код
using (TestDataContext db = new TestDataContext())
{
UserTable[] testRecords = new UserTable[1];
for (int count = 0; count < 1; count++)
{
UserTable testRecord = new UserTable()
{
CreateDate = DateTime.Now
};
testRecords[count] = testRecord;
}
StringBuilder sBuilder = new StringBuilder();
System.IO.StringWriter sWriter = new System.IO.StringWriter(sBuilder);
XmlSerializer serializer = new XmlSerializer(typeof(UserTable[]));
serializer.Serialize(sWriter, testRecords);
db.spTEST_InsertXMLTEST_TEST(sBuilder.ToString());
}
Предоставленный XML Doc
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfUserTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserTable>
<CreateDate>2010-05-19T19:35:54.9339251-07:00</CreateDate>
</UserTable>
</ArrayOfUserTable>