EF 6 SaveChanges()失败,无法将值NULL插入列

时间:2017-06-27 12:59:13

标签: c# entity-framework entity-framework-6

我有一个设置为varchar且不能为null的表。在我的代码中,我从数据库中提取数据,更新对象,然后在连接上完成SaveChanges()。

这给了我以下错误:

  

无法将值NULL插入列'FileReference',表中   'dbo.Files';列不允许空值。 INSERT失败。该   声明已被终止。

正如我所检查的那样

填充了FileReference,但在我获得的异常中:

Exception.Entries.source [0] .Entity.FileReference显示为null。

对此感到困惑。

根据要求编码

using (var conn = new MagmaContext())
{
    var result = from p in conn.Files
                 where p.fileId == 1
                 select p;

    var rec = result.FirstOrDefault();

    // code changed to use correct var
    rec.UpdateFileData(model);

    conn.SaveChanges();

}

我有一个名为ObjectTransform的扩展类。

public static class ObjectTransform
{

    public static File UpdateFileData(this File file, valueObject model)
    {
        file.FileReference = model.File.FileReference;
        file.LastUpdate = model.File.LastUpdate;
    }
}

视图模型看起来像这样

public class valueObject
{
    public int Id {get;set;}
    public string Description {get;set;}
    public File File {get;set;}
}

public class File
{
    public int Id {get;set;}
    public string FileReference {get;set;}  
}

根据评论修正代码

1 个答案:

答案 0 :(得分:0)

感谢所有人的所有答复,但我提出了解决方案。最终的原因很简单。仅此而已,File对象未正确初始化。嗯,对不起,但是对于其他初出茅庐的编码员来说还是值得一提的。