我正在为我的大学编写简单的程序。我创建了一个实体框架模型,绘制了图表,从该模型创建了数据库,在数据库上应用了SQL文件,现在我试图向数据库中添加一些项目。

我这样做是这样的:

using (NewsletterEntities context = new NewsletterEntities())
{
   Sender newSender = new Sender();
   newSender.Login = Login.Text;
   newSender.Password = Password.Text;
   newSender.Port = 23;
   newSender.SMTP = SMTP.Text;
   newSender.Email = Email.Text;
   newSender.SenderID = 0;

   context.Senders.AddObject(newSender);
   context.SaveChanges();
}


当我尝试执行它时,它会弹出内部异常:


当IDENTITY_INSERT设置为OFF时,无法为表“发件人”中的身份列插入显式值。


我试图寻找该错误,但是我对实体框架了解不多,也找不到任何特定的东西。

有人可以帮忙吗?

最佳答案

该错误与实体框架无关,而与SQL Server有关,更具体地说与the Identity column有关。

我的猜测是SenderID是一个标识列。这意味着数据库负责为该字段分配顺序值,并且不允许您为其指定值(除非您使用IDENTITY_INSERT,如错误消息所提示)。

因此,从代码中删除newSender.SenderID = 0;行应该可以解决该问题。

08-03 19:39