0

EFv4 POCO コンテキストの SaveChanges() が突然機能しなくなりました。エラーを発行します"Cannot insert NULL value into column 'postalcode' of table Clients"

ClientPostCodeentity には(properties 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() が失敗することです。Document インスタンス、Client 参照、および Client の PostCode 参照を隅々まで調べましたが、すべての値が存在します (これは、遅延読み込みが適切に機能していることも証明しています) が、保存は行われません。

私が見逃した可能性のあるアイデアを探しています..

4

1 に答える 1

0

まず、SaveChanges を実行するとエラーが発生します。これは、データベースに書き込もうとするときであるためです。それ以前は記憶の中にあるだけです。

エラーは、郵便番号がヌルを許可していないことです。

私の推測では、以前のバージョンのモデルでは null が許可されていました。そのため、郵便番号のないレコードがいくつかあります。

または、クライアントを取得するときに、郵便番号が取得されていません。

どちらの場合も、値が null の郵便番号を保存しようとしているという結果になります。

于 2011-01-31T22:19:45.927 に答える