C#模型的自定义设置器

我不知道如何为C#数据模型制作自定义setter。 场景非常简单,我希望我的密码能够使用SHA256function自动加密。 SHA256function非常好(我以前用过很多项目)。

我尝试了几件事,但是当我运行update-database ,似乎它正在递归地执行某些操作并且我的Visual Studio挂起(不发送错误)。 请帮助我了解如何在模型中默认加密密码。

用我已经尝试过的代码

 public class Administrator { public int ID { get; set; } [Required] public string Username { get; set; } [Required] public string Password { get { return this.Password; } set { // All this code is crashing Visual Studio // value = Infrastructure.Encryption.SHA256(value); // Password = Infrastructure.Encryption.SHA256(value); // this.Password = Infrastructure.Encryption.SHA256(value); } } } 

种子

 context.Administrators.AddOrUpdate(x => x.Username, new Administrator { Username = "admin", Password = "123" }); 

您需要使用私有成员变量作为后备字段。 这允许您单独存储值并在设置器中对其进行操作。

这里有好消息

 public class Administrator { public int ID { get; set; } [Required] public string Username { get; set; } private string _password; [Required] public string Password { get { return this._password; } set { _password = Infrastructure.Encryption.SHA256(value); } } } 

您正在使用的get和set实际上创建了名为get_Password()set_Password(password)

您希望将实际密码存储在私有变量中。 因此,只需拥有一个由这些“方法”返回和更新的私有变量即可。

 public class Administrator { public int ID { get; set; } [Required] public string Username { get; set; } [Required] private string password; public string Password { get { return this.password; } set { this.password = Infrastructure.Encryption.SHA256(value); } } }