2014-04-01 3 views
2

Entity Framework를 사용하여 데이터베이스에서 시퀀스 (SortOrder) 열을 업데이트하려고합니다.Entity Framework를 사용하여 일부 열만 선택하고 데이터베이스에 다시 저장

가장 쉬운 방법은 세트의 각 항목에 대해 SortOrder를로드하고 필요에 따라 SortOrder를 업데이트 한 다음 데이터베이스에 다시 저장하는 것입니다.

물론 업데이트하는 행의 모든 ​​열을 검색 할 필요가 없다면이 방법이 더 효율적입니다. 그리고 이해하는데 어려움을 겪고있는 것은 열의 일부만 선택하고 해당 열을 변경 한 다음 다시 저장하면 어떻게됩니까?

var x = from o in Package.PackageProducts 
     orderby o.SortOrder 
     select new { o.Id, o.SortOrder }; 
// Modify SortOrder in this collection x 
// Save x back to the database 

Entity Framework는 부분 엔터티를 어떻게 수정하고 저장합니까?

이 경우 Microsoft에서 어딘가에 대해 문서화 한 경우 누구에게 알리십니까? 아무도 당신이 나에게 말할 수있는 일에 대해 충분히 알고 있습니까?

답변

1

당신은 익명 형식에서 스텁 개체를 생성하고 수정 된 SortOrder를 표시 할 수 있습니다

var x = (from o in Package.PackageProducts 
     orderby o.SortOrder 
     select new { o.Id, o.SortOrder }).ToList(); 
// Modify SortOrder in this collection x 
... 
// Save x back to the database 
foreach(y in x) 
{ 
    var p = new PackageProduct { Id = y.Id, SortOrder = y.SortOrder }); // stub 
    db.PackageProducts.Attach(p); 
    db.Entry(p).Property(p1 => p1.SortOrder).Modified = true; 
} 
db.SaveChanges(); 

경우 dbDbContext입니다.

당신은 스텁 아마 모든 필요한 속성이 없기 때문에 먼저 검증을 해제 할 수 있습니다 :

db.Configuration.ValidateOnSaveEnabled = false; 
관련 문제