首页 > 解决方案 > 实体框架 FirstOrDefault 用构造函数值覆盖?

问题描述

我有一个带有构造方法的用户模型 - User()。当我使用 EF 从数据库中检索用户时,EF 从构造函数返回值,而不是从数据库中返回值。我的用户类:

public class User
{
    public string Email { get; set;}
    public string PasswordSalt { get; set;}

    public User()
    {
        PasswordSalt = "some random value"
    }
 }

检索用户:

var user = _context.User.FirstOrDefault(o => o.Email == "a@b.com");

结果,user.PasswordHash 将返回“一些随机值”,而不是实际存储在数据库中的哈希值。

标签: c#entity-frameworklinq.net-core

解决方案


我们必须改变构造函数如下

 public class User
{
public string Email { get; set;}
public string PasswordSalt { get; set;}

public User()
{
    PasswordSalt = string.IsNullOrEmpty(PasswordSalt)? "some random value":PasswordSalt;
}
}

推荐阅读