我正在使用
中的EntityFramework.BulkInserthttps://efbulkinsert.codeplex.com/
尝试将List
中的一些记录插入数据库。
我得到的是关于int字段的例外,其中不允许等于DBNull.Value
的值。
但是,它不是模型中的可空字段,因此其中至少有一个值0。将该值设置为null的概念不适用。实际上我明确地设置了值。我尝试过除0之外的其他值,得到相同的异常。
为什么我会得到例外?
我有一个包含这样的实体的列表:
var foos = new List<Foo>();
其中Foo是一个定义为的实体类:
public partial class Foo
{
public int id { get; set; }
public int SendAttempts { get; set; }
public Nullable<System.DateTime> LastSendAttempt { get; set; }
public string LastSendAttemptMessage { get; set; }
public Nullable<System.DateTime> SendDate { get; set; }
public int BarID { get; set; }
public virtual Bar Bar { get; set; }
}
列表中填充了一个循环,可以添加如下实体:
using (var transactionScope = new TransactionScope())
{
var foos = new List<Foo>();
foreach (var id in ids)
{
var foo = new Foo
{
SendAttempts = 0,
SendDate = DateTime.Now,
BarID = id
};
foos.Add(foo);
}
_entities.BulkInsert(foos);
_entities.SaveChanges();
transactionScope.Complete();
}
并且BulkInsert行中出现异常并带有消息
专栏&#39; SendAttempts&#39;不允许DBNull.Value。
答案 0 :(得分:-2)
我有同样的问题。检查EF模型和数据库中的列顺序。必须是一样的。