将实体插入EF表时出现异常

时间:2013-11-18 20:11:18

标签: entity-framework

当我将一个相当简单的实体插入表中时,我得到以下ArgumentNullException。 我认为这不重要,但数据库是SQL Server Compact .sdf文件。

  

值不能为空。   参数名称:source

     

在System.Linq.Enumerable.Any [TSource](IEnumerable 1 source, Func 2谓词)
  at System.Data.Entity.Internal.InternalContext.WrapUpdateException(UpdateException updateException)
  在System.Data.Entity.Internal.InternalContext.SaveChanges()
  在System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
  在System.Data.Entity.DbContext.SaveChanges()
  {{下面的代码}}

以下是我正在使用的代码:

var newMaterial = _localJobs.DbMaterials.Create();

newMaterial.JobID = a_job.ID;
newMaterial.MaterialName = material.Name;
newMaterial.UseType = material.UseType;
newMaterial.Length = material.Length;
newMaterial.Width = material.Width;
newMaterial.Thickness = material.Thickness;
newMaterial.DefaultLength = material.DefaultLength;
newMaterial.DefaultWidth = material.DefaultWidth;
newMaterial.DefaultThickness = material.DefaultThickness;

_localJobs.DbMaterials.Add(newMaterial);
_localJobs.SaveChanges(); // <- The exception occurs here.

我使用有效数据正确填充每个字段。这里唯一的关键是JobID。它是一个外键GUID,与名为Job的表有明确的关系。数据库中已存在正确的记录。

这是我的表架构。

enter image description here

3 个答案:

答案 0 :(得分:0)

当您有一个字段:

时会发生此错误
  • 不允许空值
  • 没有默认值
  • 您没有在插入
  • 中提供值

错误的原因可能是:

  • 您要将其中一个字段设为null
  • 保存更改还尝试保存之前添加的未显示在您发布的代码中的行。

尝试使用SQL事件探查器,然后您将看到哪个插入语句导致错误。

答案 1 :(得分:0)

鉴于您将检查已提供的所有合理建议。然后另一种可能性是你模型和DB不匹配。

你有

吗?
  

移民优秀。

..仔细检查。我之前看过这个消息; - )

答案 2 :(得分:0)

这是一个非常老的线程,但我仍然会发布答案,因为我有类似的问题,我找不到答案。也许它会帮助别人。

对我的回答非常愚蠢。我的ID列不是该表的主键。