是否可以在ValueConverter中调用DbFunction?

时间:2019-03-09 20:55:38

标签: entity-framework-core

我在数据库中有一个标量函数,已使用DbFunction属性映射到EF Core。我试图在值转换器内部调用此DbFunction。因此,我正在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 个答案:

答案 0 :(得分:1)

不,你不能。值转换器在客户端而不是数据库上运行,因此您的db函数无法在其中运行

唯一的方法是在c#中复制db函数代码,而不是抛出未实现的代码,您可以在其中放置该逻辑。然后在值转换器上使用它,如果在数据库上调用了该函数,则它将使用db中的db函数,如果在本地调用它将使用c#代码