EF保存更改突然停止工作

时间:2011-01-31 19:07:58

标签: entity-framework entity-framework-4 efpocoadapter

我的EFv4 POCO上下文中的SaveChanges()突然停止工作。它发出错误"Cannot insert NULL value into column 'postalcode' of table Clients"

Client实体包含对PostCode(属性postalcodepostname)实体的引用。 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引用,所有的值都在那里(这也证明了延迟加载到位并正常工作)但是保存不会发生。

寻找我可能错过的想法..

1 个答案:

答案 0 :(得分:0)

首先,运行SaveChanges时会出现错误,因为它是在尝试写入数据库时​​。在此之前,它只是在记忆中。

错误是邮政编码不允许空值。

我的猜测是,在模型的先前版本中,允许空值。所以有一些没有邮政编码的记录。

或者,当您检索客户端时,未检索到邮政编码。

在这两种情况下,结果都是您尝试保存值为null的邮政编码。