Как перехватить и изменить оператор вставки в Entity Framework - PullRequest
1 голос
/ 09 апреля 2019

Недавно мне пришлось добавить новый источник данных в существующее хранилище данных. Этот источник данных имел несколько таблиц, которые превышают мой текущий размер полей в хранилище данных. Я не должен изменять размер поля хранилища данных из-за нетехнических причин.

То, что я хочу сделать, это использовать 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»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...