在用户成功登录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)。有人能帮我解决这个问题吗?谢谢。

在用户成功登录asp.net mvc后更新数据库中的日期

您不应该创建新实例,而应该添加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;
        }
    }