Я изучаю реализацию формы проверки данных на уровне данных моего приложения. Я хочу принять конкретный строковый ввод в свою модель данных, но изо всех сил пытаюсь понять, как лучше всего это реализовать.
В настоящее время я изучаю, будет ли Fluent API (в настоящее время тестируется разновидность EF Core) облегчать эту функциональность, или мне нужно рассмотреть возможность добавления аннотаций данных в мою модель уровня данных, чтобы гарантировать, что проверка может быть реализована во всех службах объектно-реляционного моделирования.
Судя по чтению в Интернете, Fluent API — лучший способ действий, поскольку он снимает рабочую нагрузку с уровня данных и позволяет уровню доступа к данным контролировать и указывать конкретные правила, касающиеся того, как будут моделироваться данные.
Недостатком является то, что мне нужно будет повторно реализовать это для других ORM (например, NPoco), чтобы соответствовать правилам этой платформы.
Еще немного о проблеме
У меня есть несколько классов, которые будут иметь имена и строки с иностранными культурами, и их можно идентифицировать по строке языковой культуры, используя комбинацию ISO-639 и ISO-3166. (en-GB, zh-CN)
Это представлено строкой в модели данных.
public abstract class Alias
{
public string Culture { get; set; }
}
В EF Core я настроил таблицы с помощью функции OnModelCreating.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var authorAlias = modelBuilder.Entity<AuthorAlias>();
authorAlias.Property("Given").IsRequired().IsUnicode();
authorAlias.Property("Family").IsRequired().IsUnicode();
authorAlias.Property("Middle").IsUnicode();
base.OnModelCreating(modelBuilder);
}
Я знаю, что .NET Core имеет возможность извлекать массив CultureInfo, который использует систему строк локализации, которую я хочу реализовать, но я не собираюсь проверять это с помощью модели данных, а позволяю уровню доступа к данным проверять данные.
Как я могу гарантировать, что моя предполагаемая логика может быть реализована в системе? И нужно ли мне переходить на аннотации данных, чтобы обеспечить эту логику?