在我的控制器POST
期間,如何更新我的USERS
實體,然後使用新創建的UserID
向我的USERROLES
表中的角色分配角色。以下是我目前的代碼,嘗試保存第二組更改時發生錯誤。如何執行db.SaveChanges()然後再次更新數據庫?
我的USERROLES
表由它們的UserID
和RoleID
的組合組成。在插入表格中時,自動生成的USERS
。
如果有人能告訴我如何實際解決這個問題,這將是太棒了 - 我仍然很新的ASP MVC。
using (var db = new SwinTCSEntities()) // initialise db object
{
// add values to USERS
db.USERS.Add(new USERS
{
FirstName = model.FirstName,
LastName = model.LastName,
Username = model.Username,
Password = Crypto.HashPassword("pass1234"),
Email = model.Email,
OfficeNo = model.OfficeNo,
PhoneNo = model.PhoneNo,
RegistrationDateTime = DateTime.Now,
MeetingNotifications = true,
SubmissionNotifications = true,
TeamAssignNotifications = true,
OverdueNotifications = true
});
db.SaveChanges(); // this goes through fine
if (db.USERS.Any(x => x.Username == model.Username)) // it's able to get the new user value
{
if (model.IsAdmin && !model.IsStudent)
{
db.USERROLES.Add(new USERROLES
{
UserID = db.USERS.First(x => x.Username == model.Username).UserID,
RoleID = db.ROLES.First(x => x.Name == "Admin").RoleID,
DateAdded = DateTime.Now
});
// It errors here with a concurrency error
db.SaveChanges();
}
}
}
我到達db.SaveChanges()時,仍然會得到一個併發異常,當修改爲使用'用戶'對象時。有任何想法嗎? – Voltstriker
你會得到什麼例外? –