Недавно мне пришлось добавить новый источник данных в существующее хранилище данных. Этот источник данных имел несколько таблиц, которые превышают мой текущий размер полей в хранилище данных. Я не должен изменять размер поля хранилища данных из-за нетехнических причин.
То, что я хочу сделать, это использовать Interception-System of Entity Framework, чтобы проверить поля вставки и обрезки до определенной длины (доступно в атрибутах, Code First Approach)
Что я получил до сих пор:
public class StringTrimmerInterceptor : IDbCommandTreeInterceptor
{
void IDbCommandTreeInterceptor.TreeCreated(DbCommandTreeInterceptionContext interceptionContext)
{
if (interceptionContext.OriginalResult.DataSpace != DataSpace.SSpace)
return;
var insertCommand = interceptionContext.Result as DbInsertCommandTree;
if (insertCommand != null)
{
//Check and Trim oversized Fields
}
}
}
Выше код работает до поиска правильных операторов вставки, которые я хочу изменить. То, что я хочу знать, - Как на самом деле изменить и выполнить их.
Я нашел несколько примеров того, как изменить Query, но ничего особенного, чтобы изменить Inserts / Updates.
Результат должен быть примерно таким:
Если я пытаюсь сохранить клиента с именем: «MyCustomerWithanUnreasonableLongName», я хочу сохранить только количество символов, указанных в модели, например «MyCustomerWitha»