2011-08-22 2 views
2

저는 Entity Framework를 처음 사용하며 테이블의 데이터 업데이트와 관련하여 질문이 있습니다.엔티티 프레임 워크 - 테이블의 행 업데이트

현재 데이터를 업데이트하고 누군가가 나를 도울 수있는 더 좋은 방법을 찾고있는 경우 다음 방법을 사용하고 있습니다.

의 내가 업데이트 "종류"표하고 있다고 가정 해 봅시다 그것은 (ID가, 이름, 보관) 만 3 필드가

private void UpdateCategory(category entity) 
{ 
    category catObj = context.category.find(e=> e.id == id); 
    catObj.name = entity.name; 
    catObj.archived = entity.archived; 
    context.savechanges(); 
} 

나는 각을 지정해야합니다 범주 테이블 50 개 필드가있는 경우 내 질문은 필드를 개별적으로. 이런 일을 할 수 없다 .. catObj = entity; ?

+0

왜 'entity' 매개 변수가 추적되지 않습니까? –

+0

@Tauseef이 문제를 해결했다면 답을 입력하십시오. 나는 또한 같은 문제에 직면 해있다. – ggsmartboy

답변

0

단일 LINQ의 작동을 컬렉션의 모든 구성원의 속성을 변경할 수 있습니다 그래서

collection.Select(c => {c.PropertyToSet = value; return c;}).ToList(); 

:

private void UpdateCategory(category entity) 
{ 
    category catObj = context.category.find(e=> e.id == id); 
    catObj.Select(c=> {c.name = entity.name; c.archived = entity.archived; return c;}).ToList(); 
    context.savechanges(); 
} 
+1

여전히 50 개의 필드를 모두 직접 쓰거나 지정해야합니다. obj = obj를 객체의 모든 단일 속성에 할당하는 대신 할 수 있는지 궁금합니다. – Tauseef

1

를 이렇게하려면 자동 아마 같은 AutoMapper을 같은 프로젝트를 사용할 수 있습니다 .

그러나 속성에 전달할 카테고리의 값이 없으면 이전 카테고리의 속성을 의도하지 않은 값이 아닌 값으로 덮어 쓰게되므로주의해야합니다. 이 문제를 해결하려면 정확한 자동 투영 구성을 사용하여 원하는대로 정확하게 투영해야합니다.

0

AutoMapper가 사용자의 목적에 맞는지 잘 모르겠습니다. 또한 어쨌든 매핑을 지정해야 할 수도 있습니다. 하지만하지 손으로 만 MVCScaffolding 또는 기타 코드 생성 기술을 사용하여 생성이 작업을 수행하면 설명 무엇을, 나는 일반적으로 각 기업에 대한 void CopyEntityFrom(Category Source)로와 방법에 방법이 들어

, 내가 가진지도 문 (예 : this.name = entity.name;를) .