在用户成功登录asp.net mvc后更新数据库中的日期
本文关键字:数据库 更新 日期 mvc 成功 用户 登录 asp net | 更新日期: 2023-09-27 18:15:56
我想记录登录到我的网站的用户的最后更新。在他们成功登录后,laseUpdate文件必须更改为当前日期时间。
我使用了这个代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ICEWeb.Models
{
public class CustomerModels:ItemEntityDataContext
{
public bool ValidateCustomer(string username, string password)
{
bool b = (
this.DataContext
.Customers
.Where(s => s.ActiveInWebLogin == 1
&&
s.WebAccount == username
&&
s.Password == password
)
.SingleOrDefault()
) != null;
if (b == true)
this.UpdateCustomerLastUpdateStatus();
return b;
}
public void UpdateCustomerLastUpdateStatus()
{
Customer c = new Customer();
c.LastWebLogIn = DateTime.Now;
this.DataContext.SaveChanges();
}
}
}
validateCustomer()是工作的,但它不是更新我的记录(LastWebLogIn)。有人能帮我解决这个问题吗?谢谢。
您不应该创建新实例,而应该添加Customers对象的当前实例并将其更新到数据库中。试试这样做:
public bool ValidateCustomer(string username, string password)
{
var user = this.DataContext.Customers
.Where(s => s.ActiveInWebLogin == 1 &&
s.WebAccount == username &&
s.Password == password)
.SingleOrDefault();
if (user != null)
{
this.UpdateCustomerLastUpdateStatus(user);
return true;
}
return false;
}
public void UpdateCustomerLastUpdateStatus(Customers c)
{
c.LastWebLogIn = DateTime.Now;
this.DataContext.SaveChanges();
}
使用表。InsertOnSubmit方法,如果你想创建新的Customer:
var customer = new Customer();
customer.LastWebLogIn = DateTime.Now;
this.DataContext.Customers.InsertOnSubmit(customer);
this.DataContext.SubmitChanges();
如果你想更新现有的客户,你应该这样做:
var customer = this.DataContext.Customers
.Where(...)
.Single();
customer.LastWebLogIn = DateTime.Now;
this.DataContext.SaveChanges();
您正在为一个身份不明的新客户设置LastWebLogIn
。从数据库中获取客户(根据您的第一个方法),并更新该对象(确保您没有使用只读数据上下文进行优化)。
可以试试下面的代码吗:
public bool ValidateCustomer(string username, string password)
{
var customer = this.DataContext
.Customers
.Where(s => s.ActiveInWebLogin == 1
&&
s.WebAccount == username
&&
s.Password == password
)
.SingleOrDefault()
if (customer != null)
return this.UpdateCustomerLastUpdateStatus(customer);
return false;
}
public void UpdateCustomerLastUpdateStatus(Customer c)
{
try
{
c.LastWebLogIn = DateTime.Now;
this.DataContext.SaveChanges();
return true;
}
Catch(Exception ex)
{
// Log the error
return false;
}
}