데이터 전송 개체를 사용하여 엔티티 프레임 워크와 비즈니스 계층 및 사용자 계층간에 데이터를 전송합니다. DTO로 변환 된 객체를 검색하는 경우 엔티티 프레임 워크에서 올바른 객체를 업데이트하고 복제본을 삽입하지 않고 어떻게 업데이트합니까?엔티티 프레임 워크 개체 업데이트
24
A
답변
2
DTO에 기본 또는 대체 키를 포함시킨 다음 업데이트시 해당 키를 올바른 EF 엔터티와 다시 일치시켜야합니다.
7
오래된 질문,하지만 단지의 경우 누군가는 코드 솔루션을 필요 :
예 : 다음 코드로 작성되었습니다 EF 4 개체를 업데이트합니다
public void EditArticle(
Article article, string articleTypeId, string[] categoryId)
{
var id = 0;
Article art = de.ArticleSet
.Include("ArticleTypes")
.Include("Categories")
.Where(a => a.ArticleID == article.ArticleID)
.First();
var count = art.Categories.Count;
for (var i = 0; i < count; i++)
{
art.Categories.Remove(art.Categories.ElementAt(i));
count--;
}
foreach (var c in categoryId)
{
id = int.Parse(c);
Category category = de.CategorySet
.Where(ct => ct.CategoryID == id).First();
art.Categories.Add(category);
}
art.Headline = article.Headline;
art.Abstract = article.Abstract;
art.Maintext = article.Maintext;
art.DateAmended = DateTime.Now;
art.ArticleTypesReference.EntityKey = new EntityKey(
"DotnettingEntities.ArticleTypeSet",
"ArticleTypeID",
int.Parse(articleTypeId)
);
de.SaveChanges();
}
28
강력한 형식의 뷰에서 MVC의 컨트롤러 매개 변수 :
트릭은 ObjectStateManager를 사용하여 상태를 변경하는 것입니다. f rom 일단 엔티티가 컨텍스트에 추가되면 Modified에 추가됩니다.
MyEntities db = new MyEntities();
db.Product.AddObject(product);
db.ObjectStateManager.ChangeObjectState(product, System.Data.EntityState.Modified);
return db.SaveChanges() > 0;
당신이 EF5 사용을 사용하는 경우 @Sean 밀스 당으로하는 코멘트 :
((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Added);
4
//I am replacing player :)
public ActionResult ProductEdit(string Id, Product product)
{
int IdInt = DecyrptParameter(Id);
MyEntities db = new MyEntities();
var productToDetach = db.Products.FirstOrDefault(p=> p.Id == IdInt);
if (product == null)
throw new Exception("Product already deleted"); //I check if exists, maybe additional check if authorised to edit
db.Detach(productToDetach);
db.AttachTo("Products", product);
db.ObjectStateManager.ChangeObjectState(product, System.Data.EntityState.Modified);
db.SaveChanges();
ViewData["Result"] = 1; // successful result
return View();
}
2
이 EF 5 작동합니다 : https://stackoverflow.com/a/11749716/540802 : 마지막으로
db.Entry(product).State = EntityState.Modified;
관련 문제
- 1. 엔티티 프레임 워크 개체 대체
- 2. 엔티티 프레임 워크, AutoMapper, 엔티티 업데이트 처리
- 3. 엔티티 프레임 워크 : 다른 엔티티가 업데이트 될 때 엔티티 업데이트
- 4. 엔티티 프레임 워크 : 여러 개체 삭제 쿼리
- 5. 엔티티 프레임 워크 상속 결정 개체 유형
- 6. 엔티티 프레임 워크 : 엔티티 할당
- 7. 엔티티 프레임 워크 WCF
- 8. ASP.NET 엔티티 프레임 워크 데이터 업데이트
- 9. 엔티티 프레임 워크 함수/저장된 proc 업데이트
- 10. 엔티티 프레임 워크 및 순수 POCO 업데이트
- 11. 엔티티 프레임 워크 - 테이블의 행 업데이트
- 12. 엔티티 프레임 워크 4, 업데이트 특정 속성
- 13. 엔티티 프레임 워크
- 14. 상속이있는 엔티티 프레임 워크 엔티티
- 15. 엔티티 프레임 워크 - 다른 쿼리
- 16. Context.savechanges는 엔티티 프레임 워크
- 17. 엔티티 프레임 워크
- 18. 엔티티 프레임 워크
- 19. 엔티티 프레임 워크 조인
- 20. 엔티티 프레임 워크 : 데이터
- 21. 엔티티 프레임 워크 테이블
- 22. 엔티티 프레임 워크 쿼리
- 23. 대다 엔티티 프레임 워크
- 24. 엔티티 프레임 워크 조인
- 25. 엔티티 프레임 워크 V4
- 26. 엔티티 프레임 워크
- 27. 엔티티 프레임 워크 지연로드
- 28. 엔티티 프레임 워크
- 29. 엔티티 프레임 워크 SP
- 30. 엔티티 프레임 워크 -
! 다른 해결 방법으로 많은 시간을 낭비했습니다. 업데이트 할 때마다 dbObject.Property = passedObject.Property를 모든 속성에 적용 할 필요없이 멋지게 작동합니다. – kape123
ObjectStateManager가 컨텍스트 try ((System.Data.Entity.Infrastructure.IObjectContextAdapter) db)의 속성이 아닌 경우 .ObjectContext http://stackoverflow.com/a/8968643/678338 –