我的EFv4 POCO上下文中的SaveChanges()突然停止工作。它发出错误"Cannot insert NULL value into column 'postalcode' of table Clients"
Client
实体包含对PostCode
(属性postalcode
,postname
)实体的引用。
PostCode引用不为null,因此不是它的属性。我的Client
实体是从Document
实体引用的。
这是代码
public void Add(Document instance)
{
// Firm reference
instance.Firm =
(from f in _ctx.Firms
where f.firm_id.Equals(AppState.FirmId)
select f).First();
// Client reference (lazy loading is in place and works)
if (instance.client_id != null)
instance.Client = (from c in _ctx.Clients
where c.client_id.Equals(instance.client_id)
select c).First();
instance.document_id = Guid.NewGuid();
_ctx.Documents.AddObject(instance);
_ctx.Documents.SaveChanges();
}
问题是,AddObject()
有效,但SaveChanges()失败。我已经检查了文档实例,客户端引用和客户端的PostCode引用,所有的值都在那里(这也证明了延迟加载到位并正常工作)但是保存不会发生。
寻找我可能错过的想法..
答案 0 :(得分:0)
首先,运行SaveChanges时会出现错误,因为它是在尝试写入数据库时。在此之前,它只是在记忆中。
错误是邮政编码不允许空值。
我的猜测是,在模型的先前版本中,允许空值。所以有一些没有邮政编码的记录。
或者,当您检索客户端时,未检索到邮政编码。
在这两种情况下,结果都是您尝试保存值为null的邮政编码。