Entity Framework 6 BulkInsert 从客户端接收到无效的列长度 SQL SERVER 2012 Express
Entity Framework 6 BulkInsert receiving an invalid column length from the client SQL SERVER 2012 Express
我对 Entity Framework 6.
有点问题
我的应用程序是 WPF C# 应用程序,我使用 SQL SERVER 2012 Express。
我尝试将数据插入我的 Person table。
它工作了很长时间。今天我有一个错误:从客户端 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();
}
我检查了项目的数据长度,没有发现任何问题。
有人有想法吗?
谢谢。
SaveChanges
使用了一个SqlCommand。如果名称超过数据库限制,它将被静默截断,因此不会抛出错误。
BulkInsert
使用一个SqlBulkCopy
,如果名称超过数据库限制,将抛出错误。
这解释了为什么在一种情况下会出现错误,而在另一种情况下会出现 none。
SqlBulkCopy 不会为了好玩而引发此错误,因此我会仔细检查您的长度和列大小。
- 也许类型是
char(xyz)
,最后有space?
- 也许开头有一些space?
- 等等
.NET Fiddle 支持 Entity Framework
和 NuGet
包。所以,如果你能在网上复制它,就有可能准确地说出为什么会这样。
我对 Entity Framework 6.
有点问题我的应用程序是 WPF C# 应用程序,我使用 SQL SERVER 2012 Express。
我尝试将数据插入我的 Person table。
它工作了很长时间。今天我有一个错误:从客户端 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();
}
我检查了项目的数据长度,没有发现任何问题。
有人有想法吗?
谢谢。
SaveChanges
使用了一个SqlCommand。如果名称超过数据库限制,它将被静默截断,因此不会抛出错误。
BulkInsert
使用一个SqlBulkCopy
,如果名称超过数据库限制,将抛出错误。
这解释了为什么在一种情况下会出现错误,而在另一种情况下会出现 none。
SqlBulkCopy 不会为了好玩而引发此错误,因此我会仔细检查您的长度和列大小。
- 也许类型是
char(xyz)
,最后有space? - 也许开头有一些space?
- 等等
.NET Fiddle 支持 Entity Framework
和 NuGet
包。所以,如果你能在网上复制它,就有可能准确地说出为什么会这样。