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 'アクティブ' 列のプロパティ:
Versions: .NET 4.0, SQL Server 2008, Entity Framework 4.1