为什么在保存转换后的邮件地址时我的数据库中有空值?

Why is there a null in my database when saving a converted mail address?

按照代码优先的方法,我创建了一个模型 'User',其中包含一个属性邮件地址和一个字符串 'Name'。当我尝试保存记录时,邮件地址始终为空。

由于没有MailAddressSQL数据类型,我在fluentAPI中使用了HasConversion将MailAddress转成String,但在我的数据库中还是null

public class User {
  public int ID {get; set; }
  public String Name {get; set; }
  public MailAddress MailAddress {get; set;}
}

public ExampleDbContext : DbContext {
  DbSet<User> Users {get; set; }
  protected override void OnModelCreating(ModelBuilder modelBuilde) {
    modelBuilder.Entity<User>()
    .Property(e => e.MailAddress)
    .HasConversion(
    v => v.ToString(),
    v => new MailAddress(v));
  }
}

编辑:我被要求分享实体添加代码(或至少是 class 的摘录)。顺便说一下,自从我添加了一个脚手架项(选项:'Razor pages using entity framework (CRUD)')后,这部分代码已经自动实现了:

public class CreateModel : PageModel {

  [BindProperty]
  public User User { get; set; }

  public async Task<IActionResult> OnPostAsync()
  {
      if (!ModelState.IsValid)
      {
          return Page();
      }

      _context.Users.Add(User);
      await _context.SaveChangesAsync();

      return RedirectToPage("./Index");
  }
}

非常感谢,伙计们。

还没有测试过,只是想做这样的事情:

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    [Column("MailAddress")]
    public string MailAddressStr
    {
        get
        {
            return MailAddress?.ToString();
        }
        set
        {
            MailAddress = new MailAddress(value);
        }
    }


    [NotMapped]
    public MailAddress MailAddress { get; set; }
}

而且您将不再需要重写 OnModelCreating(ModelBuilder modelBuilder) 方法。

让我知道进展如何!