我有一个设置为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;}
}
根据评论修正代码
答案 0 :(得分:0)
感谢所有人的所有答复,但我提出了解决方案。最终的原因很简单。仅此而已,File对象未正确初始化。嗯,对不起,但是对于其他初出茅庐的编码员来说还是值得一提的。