从实体框架更新SQL位列
我在使用C#和Entity Framework更新SQL数据库中的'bit'列时遇到问题。
我有一个名为'Active'的NOT NULL位列的'Settings'表。 当我在表中创建一条记录并在代码中指定'有效'为'true'或'false'时,创建的数据库中的记录是准确的,'Active'列包含代码中指定的正确值。 当我更新记录并在代码中将'Active'从'false'更改为'true'时,该功能也起作用。 但是,当我更新从'true'到'false'的记录时,数据库中的'Active'列仍然包含'1'(真)。
这是一个已知的问题? 如果是这样,是否有解决方法? 我做了大量的研究,但无法找到任何东西。
这是我的更新代码:
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“活动”列属性:
版本 :.NET 4.0,SQL Server 2008,Entity Framework 4.1
我认为这是因为当你创建一个Setting对象.Active字段需要的是默认值:这是false。 所以当你将Active设置为false时,没有改变。 您必须在更新之前从Db加载实体。
链接地址: http://www.djcxy.com/p/33575.html