0

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

Cliententity 包含对PostCode(properties postalcode, postname) 实体的引用。PostCode 引用不为空,它的属性也不是。我的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() 失败。我已经检查了 Document 实例、客户端引用和客户端的 PostCode 引用,所有的值都在那里(这也证明延迟加载已经到位并且正在工作)但没有保存。

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

4

1 回答 1

0

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

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

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

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

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

于 2011-01-31T22:19:45.927 回答