0

C# と Entity Framework を使用して、SQL データベースの「ビット」列を更新する際に問題が発生しています。

「アクティブ」という名前の NOT NULL ビット列を持つ「設定」テーブルがあります。テーブルにレコードを作成し、コードで「アクティブ」を「true」または「false」として指定すると、作成されたデータベースのレコードは正確であり、「アクティブ」列にはコードで指定された正しい値が含まれます。レコードを更新し、コードで「Active」を「false」から「true」に変更すると、それも機能します。ただし、レコードを「true」から「false」に更新すると、データベースの「アクティブ」列にはまだ「1」(true) が含まれています。

これは既知の問題ですか? もしそうなら、回避策はありますか?私はかなりの量の調査を行いましたが、何も見つけることができませんでした。

これが私の更新コードです:

public int UpdateSetting(SettingModel settingModel)
{
    using (var db = new EfMyDB())
    {
        // Create a new setting record with the ID of the record to update.
        Setting updatedSetting = new Setting { Id = settingModel.Id };

        // Attach the record.
        db.Settings.Attach(updatedSetting);

        // Update the attached record.
        updatedSetting.Name = settingModel.Name;
        updatedSetting.Value = settingModel.Value;
        updatedSetting.Active= settingModel.Active;

        // Save the database changes.
        return db.SaveChanges();
    }
}

EF 'アクティブ' 列のプロパティ:

「アクティブ」列の EDMX ファイル内のプロパティ。

Versions: .NET 4.0, SQL Server 2008, Entity Framework 4.1

4

1 に答える 1