데이터베이스를 가져 오는 경우 탐색 속성 (그림의 속성)과 외부 ID 속성 (예 : 보고서 클래스에 User 및 UserID 속성이 있음)을 생성하십시오. 이렇게하면 클라이언트에 UserID를 설정하여 서버에 보내고 AddToReports
...을 추가 할 수 있습니다. 전체 사용자 객체를 보내면 엔티티 컨텍스트에 연결해야합니다. 그렇지 않으면 사용자가 다시 만들어집니다. . 기존 보고서의
public bool ChangeUserToNewReport(int userid, Report newReport)
{
using (MyEntities context = new MyEntities())
{
var user = context.Users.Single(u => u.ID = userid);
user.Report = newReport;
context.SaveChanges();
}
}
:
public bool CreateNewReport(Report report)
{
using (MyEntities context = new MyEntities())
{
context.AddToReports(Report);
context.Users.Attach(report.User);
context.SaveChanges();
}
}
사용자의 보고서를 변경하려면 (그러나 그것은 단지 ID로 사용자를 전송하는 것이 좋습니다) :
참조 된 사용자를 연결
public bool ChangeUserReport(int userid, Report existingReport)
{
using (MyEntities context = new MyEntities())
{
context.Reports.Attach(existingReport);
var user = context.Users.Single(u => u.ID = userid);
user.Report = existingReport;
context.SaveChanges();
}
}
이것은 모델이 어떻게 보이는지 보여주는 샘플입니다. 연관 선을 두 번 클릭하여 대화 상자를 엽니 다. Person
및 PersonID
속성이 동일하다는 것을 알 수 있습니다. 이와 같이 모델을 만들면 VS에서 올바른 SQL을 생성해야합니다.
한 쪽 메모 : 항상 다음을 사용하여 엔티티 컨텍스트를 사용하십시오. (var ctx = new MyEntities()) {...}'. 이것은 사용 된 모든 리소스를 해제하는 using 블록의 끝에 Dispose를 호출합니다 ... –
@RicoSuter 좋은 점, 감사합니다. – Michael