RIA 서비스를 사용하여 데이터베이스에 연결된 클라이언트가있는 Entity Framework를 사용하고 있습니다. 클라이언트에서 무언가가 저장 될 때마다 영향을받는 행의 모든 열이 업데이트됩니다.Entity Framework 및 RIA 서비스로 수정 된 열만 업데이트
의도적 인 동작입니까, 아니면 RIA 도메인 서비스를 통해 전파되는 변경 집합을 실제로 변경된 열만 업데이트하도록 할 수 있습니까?
RIA 서비스를 사용하여 데이터베이스에 연결된 클라이언트가있는 Entity Framework를 사용하고 있습니다. 클라이언트에서 무언가가 저장 될 때마다 영향을받는 행의 모든 열이 업데이트됩니다.Entity Framework 및 RIA 서비스로 수정 된 열만 업데이트
의도적 인 동작입니까, 아니면 RIA 도메인 서비스를 통해 전파되는 변경 집합을 실제로 변경된 열만 업데이트하도록 할 수 있습니까?
RIA 서비스 (및 해당 문제에 대한 Entity Framework)의 이전/변경 단위는 엔티티입니다.
어째서 SQL을 사용하여 비즈니스 응용 프로그램에서 전체 행을 대부분 쓸 때 변경되는 열만 업데이트하려는 이유가 무엇입니까? 일반적으로 행의 특정 열만 업데이트하려면 처리 능력/코드/시간이 더 많이 필요합니다.
좀 더 세분화 된 것을 원한다면 각 행의 속성 당 엔티티를 만들어야 할 필요가 있지만 그럴 필요가 있습니다. 당신의 목표를 명확히 할 수 있습니까? 당신의 Update<T>
방법에서
, 당신은
당신은 모든 업데이트 방법에 대해이 작업을 수행해야합니다 ... 다음을 수행해야합니다 그리고 당신은 특정 개체에 대한 기본 키를 기반으로 dbOriginal을 얻을해야합니다.// change state of entity as Unmodified/Unchanged...
original.EntityState = Unchanged;
// this is copy form database...
// Use different context
MyOrderContext context = new MyOrderContext();
Order dbOriginal = context.Orders.First(x=>x.OrderID == original.OrderID);
foreach(PropertyInfo p in copy.GetTypes().GetProperties()){
Object originalValue = p.GetValue(dbOriginal);
Object newValue = p.GetValue(original);
if(originalValue!=null && newValue!=null
&& originalValue.Equals(newValue)){
continue;
}
// resetting this will
// make entity's only current
// property as changed
p.SetValue(original,originalValue);
p.SetValue(original,newValue);
}
RIA 용 관 속에 또 다른 못. 단일 사용자 시나리오에서만 사용하려는 경우가 아니라면 이는 쓸모가없는 것입니다. 그래도 고마워! – BowlingForGreens
Entity Framework에는 구현하기가 어려운 동일한 결함이 있습니다. 자신 만의 변경 내용 추적 및 열 특정 업데이트를 RIA에 추가하는 것이 가장 좋습니다 (이렇게 할 수는 있지만 코드에 따라 결정됩니다). –