ASP.NET MVC3 환경에서 Entity Framework 5 내에서 레코드를 편집 / 업데이트하는 다양한 방법을 탐색했지만 지금까지 필요한 모든 상자를 선택하지는 않습니다. 이유를 설명하겠습니다.
장단점을 언급 할 세 가지 방법을 찾았습니다.
방법 1-원본 레코드로드, 각 속성 업데이트
var original = db.Users.Find(updatedUser.UserId);
if (original != null)
{
original.BusinessEntityId = updatedUser.BusinessEntityId;
original.Email = updatedUser.Email;
original.EmployeeId = updatedUser.EmployeeId;
original.Forename = updatedUser.Forename;
original.Surname = updatedUser.Surname;
original.Telephone = updatedUser.Telephone;
original.Title = updatedUser.Title;
original.Fax = updatedUser.Fax;
original.ASPNetUserId = updatedUser.ASPNetUserId;
db.SaveChanges();
}
찬성
- 변경할 속성을 지정할 수 있습니다
- 뷰는 모든 속성을 포함 할 필요는 없습니다
단점
- 원본을로드 한 후 업데이트하기위한 데이터베이스의 2 x 쿼리
방법 2-원본 레코드로드, 변경된 값 설정
var original = db.Users.Find(updatedUser.UserId);
if (original != null)
{
db.Entry(original).CurrentValues.SetValues(updatedUser);
db.SaveChanges();
}
찬성
- 수정 된 속성 만 데이터베이스로 전송됩니다
단점
- 뷰는 모든 속성을 포함해야합니다
- 원본을로드 한 후 업데이트하기위한 데이터베이스의 2 x 쿼리
방법 3-업데이트 된 레코드 첨부 및 상태를 EntityState.Modified로 설정
db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();
찬성
- 업데이트 할 데이터베이스의 1 x 쿼리
단점
- 변경할 속성을 지정할 수 없습니다
- 보기에는 모든 속성이 포함되어야합니다
질문
너희들에게 내 질문; 이 목표를 달성 할 수있는 확실한 방법이 있습니까?
- 변경할 속성을 지정할 수 있습니다
- 조회수는 모든 속성 (예 : 비밀번호)을 포함 할 필요는 없습니다.
- 업데이트 할 데이터베이스의 1 x 쿼리
나는 이것이 지적해야 할 사소한 일이라는 것을 알고 있지만 이것에 대한 간단한 해결책이 누락되었을 수 있습니다. 방법이 아니라면 우선합니다 ;-)