Можно ли вызвать DbFunction внутри моего ValueConverter? - PullRequest
0 голосов
/ 09 марта 2019

В базе данных есть скалярная функция, которую я сопоставил с EF Core с помощью атрибута DbFunction. Я пытаюсь вызвать эту функцию DbF внутри конвертора значений. Поэтому я пытаюсь сделать следующее в моем DbContext.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Person>()
        .Property(e => e.Firstname)
        .HasConversion(e => e, e => GetTranslation());
}

[DbFunction("GetTranslation", "dbo")]
public static string GetTranslation()
{
    throw new NotImplementedException();
}

К сожалению, это не работает. Функция DbFunction не будет вызвана. Есть ли способ сделать это?

1 Ответ

1 голос
/ 13 марта 2019

Нет, ты не можешь. Преобразователи значений выполняются на клиенте, а не в базе данных, поэтому ваша функция БД там не будет работать

Единственный способ сделать это - скопировать код функции db в c #, и вместо того, чтобы бросать не реализованный, вы можете поместить эту логику туда. И затем используйте его в вашем конвертере значений, если функция вызывается из базы данных, она будет использовать функцию db из db, если она вызывается локально, она будет использовать код c #

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