저는 VS 2010 RC를 사용하여 Entity Framework 4에서 제작 한 국가의 간단한 엔티티를 보유하고 있습니다. 아래의 POCO와 비슷합니다.Entity Framework 4 - ApplyCurrentValues를 사용하여 부울 속성을 항상 업데이트하는 것은 아닙니다
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();
}
countryToEdit에 false에서 true로 활성 필드 변경이 예상되는
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
다음과 같은 SQL을 생성합니다. 내가 countryToEdit에 true에서 false로 활성 필드를 변경하는 경우
는 다음과 같은 SQL는 Active 필드를 업데이트하려고 시도가 없습니다
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
를 생성한다.
속성을 nullable bool로 변경할 수있는 경우 스텁 엔터티 접근 방식을 사용할 수 있습니다. 기본값은 null이 될 것이고 ApplyCurrentValues는 현재 엔티티에서 스텁의 null에서 false로 변경 사항을 선택하고 업데이트를 위해 여분의 sql을 방출합니다. –