0

Entity Framework 4.1 を使用しています。外部キーのない単純なテーブルがオブジェクト (TransmissionHistory テーブルとオブジェクト) にマップされます。しかし、保存すると、フィールドの 1 つが NULL になります。ログに。(フィールド名は WhoDidIt です。)

さらに調査した結果、オブジェクトの自動プロパティを Get と Set およびプライベート バッキング プロパティに置き換えました。データベースの保存が実行されると、他のプロパティの「取得」が実行されますが、私の問題である WhoDidIt プロパティは実行されません。

クラス定義の一部を次に示します。

    public partial class TransmissionHistory
{
    private string _id;
    private string _transmissonTable;
    private string _whoDidIt;

    public string Id
    {
        get { return _id; }
        set { _id = value;  }
    }
    public string TransmissionTable
    {
        get { return _transmissonTable; }
        set { _transmissonTable = value;  }
    }

    public string WhoDidIt
    {
        get { return _whoDidIt; }
        set { _whoDidIt = value;  }
    }

オブジェクトを作成して保存するコードを次に示します。

        TransmissionHistory trxHist =  new TransmissionHistory();
        trxHist.Id = guid.ToString();
        trxHist.TransmissionTable = "MyTransmission";
        trxHist.WhoDidIt = "Me";
        _db.TransmissionHistories.Add(trxHist);
        _db.SaveChanges();

ブレークポイントを設定すると、データベースの SaveChanges が他の 2 つのプロパティの Get メソッドをヒットしていることは明らかですが、Wh​​oDidIt はヒットしていません。そのため、trxHist オブジェクトが WhoDidIt に値を持っていても、データベースには常に NULL として保存されます。これは「データベース ファースト」としてビルドされ、Visual Studio によってオブジェクトがビルドされました。また、テーブルを削除して再構築し、コードを再生成して、フィールド名を変更しようとしました。ここで何が起きてるの?

4

1 に答える 1