2011-03-23 3 views
1

그림 및 기타 파일 형식의 테이블 인 테이블이 있습니다. 이름 입력란을 수정하고 싶습니다. 일반적으로 내가 이런 짓을 했을까 :EntityObject가없는 Entity Framework로 필드 수정

var file = Db.Files.First(f => f.FileID == id); 
file.Name = "NewName"; 
Db.SaveChanges(); 

그러나,이 경우이 아무 이유없이 데이터베이스 서버에서 전체 VARBINARY (최대)를 가져옵니다. 전체 EntityObject를 가져 오지 않고 항목을 편집 할 수있는 방법이 있습니까? 아마도 스텁 개체 또는 뭔가를 사용할 수 있습니까?

답변

3

확인 :

// Define a dummy object 
var file = new File { Id = id, Name = "NewName" }; 
// The dummy object attached as Unchanged entity 
context.Files.Attach(file); 
// Get change tracking information about the entity 
ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(file); 
// Set Name property to modified 
entry.SetModifiedProperty("Name"); 
// Save changes - only Name property will be modified 
context.SaveChanges(); 

그것은 데이터베이스에 당신에게 쿼리를 저장합니다.

+0

정확히 내가 무엇을 찾고 있는지. 고맙습니다 – tster

1

엔티티를 두 개의 엔티티로 분할하고 비싼 데이터 열을 두 번째 엔티티로 이동할 수 있습니다. 또한이 간단한 트릭을 사용할 수 있습니다 “Table Splitting”: Mapping multiple entity types to the same table.

+0

나는 이것을 위해 내 스키마를 수정하지 않을 것입니다. – tster

+0

DB 스키마가 수정되지 않습니다. 수정 된 엔티티입니다. 밑줄 친 테이블은 같습니다. 하지만 네가 엔티티도 나눌 수 없거나 원하지 않는다면, 내가 생각할 수있는 유일한 것은 원하는 열만 업데이트하는 커스텀 SQL을 사용하고 실행하는 것입니다. –

+0

오, 이제 알겠습니다. 나는 그렇게 할 수도있다. 좋은 제안. – tster

관련 문제