【发布时间】:2019-10-24 00:13:26
【问题描述】:
我有一个带有构造方法的用户模型 - 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 将返回“一些随机值”,而不是实际存储在数据库中的哈希。
【问题讨论】:
-
在创建模型时使用默认值怎么样。 docs.microsoft.com/en-us/ef/core/modeling/relational/…
-
这里的密码盐值意味着每个用户都会收到一个唯一生成的随机值。如果我正确理解默认值的概念,那似乎会呈现一个静态值。
-
无法重现 - 我可以在构造函数中设置默认值,但如果在数据库中找到一行,则将返回这些值 - 而不是构造函数的默认值。这里一定有更多的事情发生......
-
@marc_s 你是对的,我的代码有问题。该类有一个 setter 函数,该函数在为属性分配值时生成一个新的哈希(此方法未在上面的代码中显示)。即使值来自数据库,EF 似乎也应用了 setter 函数。
标签: c# entity-framework linq .net-core