나는 조금 어리 석다. 나는 추론 할 수없는 이유는 다음 작품 :사후 편집 작업 - respository.save()가 데이터를 저장하는 이유는 무엇입니까?
샘플은 dinnerRepository.Save는()로 정의된다 스콧 오클라호마의 NerdDinner 연습에서 가져옵니다AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues) {
Dinner dinner = dinnerRepository.GetDinner(id);
UpdateModel(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
:
public void Save() {
db.SubmitChanges();
}
그리고 dinnerRepository.GetDinner (ID
public Dinner GetDinner(int id) {
return db.Dinners.SingleOrDefault(d => d.DinnerID == id);
}
즉, 어떻게 DB를 NerdDinnerDataContext는 "알고"않습니다 저녁 식사 객체를 저장할 다음과 같이) 정의?
Linq에 대한 이해를 돕기 위해 SQL에 구멍이 있어야하지만 핀을 꽂을 수 있다면 불어 넣을 수 있습니다. 좋습니다. 저녁 개체에는 ID가 있지만 그 ID가있는 특정 레코드에 대한 변경 사항이 있다는 것을 db에 알려주는 것은 무엇입니까?
나는 그것을 볼 수 없다. 월드컵이되어야합니다 ...
나는 DataContext 개체 db가 GetDinner 메서드 호출을 사용하여 얻은 저녁 식사 개체에 대한 참조를 유지한다고 생각할 수 있습니다. 하지만 ... 그것은 모두 당신이 (이 기억하지 않습니다 ... Linq2SQL 또는 엔티티 프레임 워크 중 하나입니다) 그것이 ORM 층에 의해 처리됩니다 생각으로
앤드류
변경 사항이있는 업데이트 된 레코드로 사용할 개체를 어떻게 알 수 있습니까? , 생성 된 객체에 대한 참조를 유지합니다. 그 속성들을 볼 것입니다. 분명히 LINQ To SQL은 내가 생각했던 것보다 더 많은 일을합니다. 이것의 맨 아래로 가야 할 것입니다. 여러분 모두에게 많은 감사를드립니다. 사람은 비스킷을 가져야 만합니다. 그래서 먼저 대답 한 야곱에게 상을 줄 것입니다. – awrigley
Linq2Sql이 어떻게 동작하는지에 대한 자세한 내용은 잘 모르겠습니다. 코드를 파헤쳐서 찾지 못할 수도 있습니다. 당신이 관심이 있다면 NHibernate는 또한 데이터베이스에서 어떤 객체를 가져 왔는지, 새로 생성 된 객체와 그 객체들에 발생한 모든 변경 사항을 추적합니다 (동적 프록시와 같은 것을 사용합니다). NHibernate 소스 코드를 검토하고 그 특정 문제를 해결하는 방법이 무엇인지 살펴 보는 것이 흥미로울 수 있습니다. – ckramer
제가 조사하고 있습니다. 그렇습니다. datacontext 인스턴스는 범위 내에있는 동안 검색 한 데이터를 추적합니다. 이것은 내 이해의 큰 구멍이었고 그것을 채워 넣어야했습니다. 참조가 어떻게 작동하는지 정확하게 파악할 필요가 있습니다. – awrigley