如果您导入数据库,生成导航属性(图片中的属性)和外部 id 属性(例如,您的报表类中有 User 和 UserID 属性)。这样,您可以在客户端中设置 UserID 并将其发送到服务器并添加AddToReports
...如果您发送整个用户对象,则必须将其附加到实体上下文,否则将再次创建用户...
附上引用的用户:(但最好只通过id发送用户)
public bool CreateNewReport(Report report)
{
using (MyEntities context = new MyEntities())
{
context.AddToReports(Report);
context.Users.Attach(report.User);
context.SaveChanges();
}
}
要更改用户的报告:
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 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。