몇 가지 다른 방법으로 여러 번 질문을했지만 아직 응답이 없습니다. 내 솔루션이 너무 복잡한 것처럼 느껴지기 때문에 나는 다시 시도하고있다. 나는 더 간단한 것을 놓치고 있어야한다.다 대 다 관계 업데이트
MVC 3 응용 프로그램에서 EF 4.1, POCO, DbContext API, AutoMapper 및 Razor를 사용합니다.
두 개의 엔티티 인 제안서와 카테고리 태그 사이에 다 대다 관계가 있습니다. 카테고리 태그 컬렉션을 포함하여 제안서를 ProposalViewModel에 성공적으로 매핑 (Automapper) 할 수 있습니다.
내보기에서 나는 선택한 태그의 ID를 저장하는 요소를 동적으로 생성하여 태그를 추가, 업데이트 및 제거 할 수있는 javascript를 사용합니다.
각 CategoryTag의 ID 속성만으로도 CategoryTags 컬렉션이 채워진 상태로 내 ViewModel을 내 컨트롤러에 성공적으로 게시 할 수 있습니다.
ViewModel을 내 컨트롤러에 다시 게시 할 때 ViewModel에서 태그를 가져 오는 방법을 모르고 db.SaveChanges()가 데이터베이스를 올바르게 업데이트하는 방식으로 모델에 추가합니다.
내가 어떤 성공을 했어 만 방법은합니다 (.add를 호출 한 후, (다르게 야밀에 의해) 매핑에 CategoryTags 모음을 분리 각 태그를 통해 반복하고 수동으로 맥락에서 그것을보고하는 것입니다) 방법. 이것은 내가 잘못하고 있다고 믿게하는 여러 가지 이유 때문에 엉성함입니다.
누구든지 어떤 방향으로 제공 할 수 있습니까?
UPDATE : 내 기능 코드, 관심있는 사람들을위한
:
Dim p As New Proposal
Dim tempTag As CategoryTag
p = AutoMapper.Mapper.Map(Of ProposalViewModel, Proposal)(pvm)
db.Proposals.Attach(p)
db.Entry(p).Collection("CategoryTags").Load()
For Each ct In pvm.Tags
tempTag = db.CategoryTags.Find(ct.Id)
If tempTag Is Nothing Then
Continue For
End If
If ct.Tag = "removeMe" Then
p.CategoryTags.Remove(tempTag)
Continue For
End If
p.CategoryTags.Add(tempTag)
Next
db.Entry(p).State = EntityState.Modified
db.SaveChanges()
Return RedirectToAction("Index")
Ladislav, Thak 당신이 듣고 싶었던 불행한 대답입니다. 이것이 유일한 방법 일 경우, EF 4.2에서이 문제를 다루기를 기대합니다. :) –
20 번 이상 비슷한 질문에 답한 후에이 문제에 대한 자동 해결책이 없을 수도 있습니다. 문제. 단순히 엔티티를 분리했다면 EF에 무슨 일을했는지 반드시 말해야합니다. 삽입, 업데이트, 삭제를 수동으로 수행하려는 경우와 같습니다. 삭제 된 내용과 삽입 된 내용을 알아야합니다. –
나는 그것이 의미가 있다고 생각한다. EF가 당신의 분리 된 존재와 현재의 차이점을 바탕으로 적어도 "auto reconcilier"를 가지고 있다면 좋을 것이다. 여러 번 답변을 드려 죄송합니다.이 주제에 대해 확실한 답변을 찾지 못했습니다. –