Следуя подходу, основанному на коде, я создал модель «Пользователь», которая содержит атрибут почтового адреса и строку «Имя». Когда я пытаюсь сохранить запись, почтовый адрес всегда равен нулю.
Поскольку отсутствует тип данных 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");
}
}
Большое спасибо, ребята.