从实体框架更新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“活动”列属性:

EDMX文件中'活动'列的属性。

版本 :.NET 4.0,SQL Server 2008,Entity Framework 4.1


我认为这是因为当你创建一个Setting对象.Active字段需要的是默认值:这是false。 所以当你将Active设置为false时,没有改变。 您必须在更新之前从Db加载实体。

链接地址: http://www.djcxy.com/p/33575.html

上一篇: Updating SQL bit column from Entity Framework

下一篇: Exclude Property on Update in Entity Framework