【发布时间】:2013-12-02 03:22:57
【问题描述】:
当我将一个相当简单的实体插入到表中时,我得到以下ArgumentNullException。
我认为这并不重要,但数据库是一个 SQL Server Compact .sdf 文件。
值不能为空。 参数名称:来源
在 System.Linq.Enumerable.Any[TSource](IEnumerable
1 source, Func2 谓词)
在 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 的表有显式关系。正确的记录已存在于数据库中。
这是我的表架构。
【问题讨论】:
-
调试的时候,其他所有的字段都是非空值吗?
-
这可能会对您有所帮助:stackoverflow.com/questions/3244336/… - 可能不会。另外:stackoverflow.com/questions/16281133/…
-
Material 类是什么样的?
-
Material 类是一个简单的 POCO,其中
Name是一个字符串;UseType是一个字符串;Length、Width和Thickness是双精度数;和DefaultLength、DefaultWidth和DefaultThickness是双打。这些都不能为空,并且在我调试时都设置为有效值。 -
对不起,我的意思是 DbMaterials。如果您在
Context类中使用字段而不是属性,我依稀记得类似的错误。例如。如果你有public DbSet<Material> DbMaterials ;,你会想要public DbSet<Material> DbMaterials { get; set; }
标签: entity-framework