Entity Framework Core 2 Сохранить строки в верхнем регистре

Я хочу сохранить все строки в моей БД в верхнем регистре. Я думаю, что лучшее место для этого - переопределение SaveChanges() на моем DbContext, Я знаю, мне нужно позвонить ToUpper() на что-то, но я не уверен, что позвонить.

public override int SaveChanges()
{
    foreach (var entry in ChangeTracker.Entries().Where(e => e.State == EntityState.Added || e.State == EntityState.Modified))
    {
       //do something
    }
    return base.SaveChanges();
}

1 ответ

Я не уверен, разумно ли загрязнять слой базы данных этим ограничением. Это ограничит возможность повторного использования вашей базы данных.

Довольно часто определение структуры базы данных (таблиц) отделено от обработки данных в базе данных, что осуществляется через отдельный уровень абстракции базы данных.

Такое разделение позволяет повторно использовать структуру вашей базы данных для баз данных с другими ограничениями (например, такой, которая допускает строки в нижнем регистре, или специальной базой данных для модульных тестов).

Такое разделение проблем довольно часто реализуется с использованием шаблона хранилища. Такое разделение позволяет изменять функциональные возможности базы данных без необходимости изменения структуры базы данных.

Вы также можете использовать существующую базу данных, которая использует строки нижнего регистра, так как ваш уровень хранилища может преобразовать все в верхний регистр перед возвратом запрашиваемых строк.

Таким образом, отделяя базу данных от функциональности данных, вы облегчаете повторное использование базы данных для других целей и изменение требований без необходимости изменения данных в базе данных: улучшенное повторное использование и улучшенное обслуживание.

Другие вопросы по тегам