Почему в моей базе данных есть ноль при сохранении преобразованного почтового адреса? - PullRequest
1 голос
/ 03 мая 2019

Следуя подходу, основанному на коде, я создал модель «Пользователь», которая содержит атрибут почтового адреса и строку «Имя». Когда я пытаюсь сохранить запись, почтовый адрес всегда равен нулю.

Поскольку отсутствует тип данных MailAddress SQL, я использовал HasConversion в свободном API для преобразования MailAddress в String, но в моей базе данных он по-прежнему нулевой.

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));
  }
}

Редактировать: объект, добавляющий код, которого меня попросили поделиться (или хотя бы отрывок из класса). Эта часть кода, между прочим, была автоматически реализована, так как я добавил элемент скаффолда (опция: «Разрежьте страницы, используя 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");
  }
}

Большое спасибо, ребята.

1 Ответ

1 голос
/ 03 мая 2019

Не проверял это, но просто подумал сделать что-то вроде этого:

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).

Дайте мне знать, как это происходит!

...