【发布时间】:2019-02-22 09:26:05
【问题描述】:
我对 Entity Framework 6 有一点问题。
我的应用程序是 WPF C# 应用程序,我使用 SQL SERVER 2012 Express。
我尝试将数据插入到我的 Person 表中。
它工作了很长时间。今天我遇到了一个错误:从客户端 46 接收到无效的列长度。
我搜索并找到了一些文章,他们在谈论列大小等,但就我而言,这不是问题。
此代码有效:dc.BulkInsert(listToInsert, options);
**using EntityFramework.BulkInsert.Extensions;**
//I have a list of person object to insert.
var listToInsert = PersonList.Where(ro => !ExistingPerson.Contains(ro.Pers_Code.ToLower())).ToList();
using(MyEntities dc = new MyEntities())
{
*//If I add items one by one, it works*
foreach (var item in listToInsert)
{
dc.Person.Add(item);
}
dc.SaveChanges(); //Success.
//But If I use Bulkinsert, I have an error message
BulkInsertOptions options = new BulkInsertOptions();
options.BatchSize = 1000;
dc.BulkInsert<Person>(listToInsert, options); // at this moment I have this error message : receiving an invalid column length from the client 46.
dc.SaveChanges();
}
我检查了items的数据长度,没有发现任何问题。
有人有想法吗?
谢谢。
【问题讨论】:
-
您确定数据库和类之间没有一些不匹配?能不能加上Entity Class + Create Sql Table语句?
-
这段代码运行了很长时间。今天只有新数据。没想到错配,因为使用实体框架,一一添加,就可以了。
-
看不到您的桌子,几乎不可能为您指明正确的方向。但正如@jonathan 所提到的,很可能是某个字符串现在比您的数据库预期的要长,并且使用 SQL 语句很可能会被截断。
标签: c# entity-framework-6 sql-server-2012-express