Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架FirstOrDefault使用构造函数值重写?_C#_Entity Framework_Linq_.net Core - Fatal编程技术网

C# 实体框架FirstOrDefault使用构造函数值重写?

C# 实体框架FirstOrDefault使用构造函数值重写?,c#,entity-framework,linq,.net-core,C#,Entity Framework,Linq,.net Core,我有一个带有构造函数方法-User()的用户模型。当我使用EF从数据库检索用户时,EF从构造函数返回值,而不是从数据库返回值。我的用户类: public class User { public string Email { get; set;} public string PasswordSalt { get; set;} public User() { PasswordSalt = "some random value" } } 正

我有一个带有构造函数方法-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将返回“一些随机值”,而不是实际存储在数据库中的哈希值。

我们必须按如下所示更改构造函数

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

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

创建模型时使用默认值怎么样。这里的密码salt值意味着每个用户都会收到一个唯一生成的随机值。如果我正确理解了默认值的概念,那么这似乎是一个静态值。无法重现这一点-我可以在构造函数中设置默认值,但如果在数据库中找到一行,则将返回这些值-而不是构造函数的默认值。这里肯定有更多的事情发生……@marc_你是对的,我的代码中有错误。该类有一个setter函数,该函数在为属性赋值时生成一个新的散列(上面的代码中没有显示此方法)。似乎EF应用了setter函数,即使值来自DB。