是否可以在ValueConverter中调用DbFunction?

问题描述 投票:0回答:1

我在数据库中有一个Scalar-Function,我使用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不会被调用。有没有办法实现这个目标?

entity-framework-core
1个回答
1
投票

不,你不能。值转换器在客户端而不是数据库上运行,因此您的数据库功能无法在那里运行

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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.