如果导入数据库,生成导航属性(图片中的属性)和外部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。
一面注意:总是使用实体上下文,使用:'使用(var ctx = new MyEntities()){...}'。这将在使用块的末尾调用Dispose,这将释放所有使用的资源... – 2012-04-06 10:35:04
@RicoSuter好点,谢谢 – Michael 2012-04-06 10:47:57