如果導入數據庫,生成導航屬性(圖片中的屬性)和外部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。 ![enter image description here](https://i.stack.imgur.com/WrFk1.jpg)
一面注意:總是使用實體上下文,使用:'使用(var ctx = new MyEntities()){...}'。這將在使用塊的末尾調用Dispose,這將釋放所有使用的資源... – 2012-04-06 10:35:04
@RicoSuter好點,謝謝 – Michael 2012-04-06 10:47:57