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 ответ
Я не уверен, разумно ли загрязнять слой базы данных этим ограничением. Это ограничит возможность повторного использования вашей базы данных.
Довольно часто определение структуры базы данных (таблиц) отделено от обработки данных в базе данных, что осуществляется через отдельный уровень абстракции базы данных.
Такое разделение позволяет повторно использовать структуру вашей базы данных для баз данных с другими ограничениями (например, такой, которая допускает строки в нижнем регистре, или специальной базой данных для модульных тестов).
Такое разделение проблем довольно часто реализуется с использованием шаблона хранилища. Такое разделение позволяет изменять функциональные возможности базы данных без необходимости изменения структуры базы данных.
- Структура сущности описания MSDN и шаблон хранилища
- Переполнение стека: шаблон репозитория Пошаговое объяснение
Вы также можете использовать существующую базу данных, которая использует строки нижнего регистра, так как ваш уровень хранилища может преобразовать все в верхний регистр перед возвратом запрашиваемых строк.
Таким образом, отделяя базу данных от функциональности данных, вы облегчаете повторное использование базы данных для других целей и изменение требований без необходимости изменения данных в базе данных: улучшенное повторное использование и улучшенное обслуживание.