У меня есть простая сущность для страны, которая создается Entity Framework 4 с использованием VS 2010 RC. Это выглядит примерно как POCO ниже.
public class Company
{
public int ID { get; set; }
public string Name { get; set; }
public string ISOCode { get; set; }
public boolean Active { get; set; }
}
Код моего репозитория указан ниже. 'db' - это мой контекст, который инициализируется в конструкторе.
public void EditCountry(Country countryToEdit)
{
db.Countries.Attach(new Country { ID = countryToEdit.ID });
db.Countries.ApplyCurrentValues(countryToEdit);
db.SaveChanges();
}
Изменение поля Active с false на true в countryToEdit приводит к следующему SQL
update [dbo].[Countries]
set [Name] = @0, [ISOCode] = @1, [Active] = @2
where ([ID] = @3)
@0 nvarchar(256),@1 nvarchar(12),@2 bit,@3 int,@0='Algeria',@1='DZ',@2=1,@3=4
Это ожидается.
Если я изменил поле Active с true на false в countryToEdit, будет получен следующий SQL
update [dbo].[Countries]
set [Name] = @0, [ISOCode] = @1
where ([ID] = @2)
@0 nvarchar(256),@1 nvarchar(12),@2 int,@0='Afghanistann',@1='AF',@2=1
Не предпринимается попытка обновить поле Active.