我有一個需求,我需要在我的MVC 4網站的用戶會話開始時創建數據庫記錄。創建MVC會話的唯一記錄
的入口點控制器的輪廓看起來是這樣的:
public ActionResult Index(int userId, int requestId) {
var userInfo = db.GetUserInfo(userId, requestId);
if (userInfo == null) {
userInfo = db.CreateUserInfo(userId, requestId);
}
// rest of code
}
我所發現的是,這個代碼是不是在儘可能多的很ocassionaly重複記錄創建(通常具有相同的完全可靠創建日期 - 至少到最近的毫秒)。我只能假設(外部)網頁/客戶端生成兩個幾乎同時發出的請求。
請注意,如果用戶在日後返回站點(使用相同的查詢字符串參數),那麼我希望他們拿起現有的userInfo記錄。
我知道我可以通過在表中添加一個唯一索引來解決問題,我可能需要做任何事情,但是我想知道是否有更好的模式可以遵循?
這種類型的代碼更適合將它添加到'Session_start'事件中的'Global.asax'文件中。通過這種方式,您可以捕獲在最初入口點以外的其他地方進入的用戶。 –
背後的意圖是什麼!在if條件下? – tigeronk2
if(!userInfo == null)用於檢查記錄是否已經存在。如果userInfo爲空,則需要新記錄。 – Neilski