我在数据库中有一个标量函数,已使用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将不会被调用。 有没有办法做到这一点?
答案 0 :(得分:1)
不,你不能。值转换器在客户端而不是数据库上运行,因此您的db函数无法在其中运行
唯一的方法是在c#中复制db函数代码,而不是抛出未实现的代码,您可以在其中放置该逻辑。然后在值转换器上使用它,如果在数据库上调用了该函数,则它将使用db中的db函数,如果在本地调用它将使用c#代码