使用Entity Framework Core调用标量函数的最佳实践(2.1)

我经常需要从我的Web应用程序(ASP.NET Core / EF Core)调用SQL Server上定义的标量函数。 由于这些函数只是简单的辅助函数,我也使用了很多函数,因此我使用一般模式来调用这些标量函数 – 借助EF Core 2.1提供的新查询类型。 由于我对EF Core相对较新,我的问题是这种模式是否会导致问题和/或是否有更好的解决方案或最佳实践来调用标量函数。 解决方案有效,到目前为止我无法观察到任何问题但是例如我想知道对于不同的函数使用相同的查询类型是否会导致意外的值或由于EF Core中的缓存/跟踪行为等引起的奇怪行为 – 它更像是一个直觉。

所以这是模式:我不是为每个标量函数定义不同的实体类型,而是简单地定义一个generics类型:

public class PrimitiveDto { public T Value { get; set; } } 

在我的上下文类中,我为我希望使用的标量函数的每个返回类型注册这些类型 – 因此对于返回’int’的所有标量函数,上下文类将有一个额外的条目,如下所示:

 public virtual DbQuery<PrimitiveDto> BasicIntDto { get; set; } 

在应用程序的每个部分,我想调用一个返回’int’的标量函数,我只使用相同的以下模式:

 context.BasicIntDto.FromSql("SELECT  AS Value") 

通过使用这种模式,我可以以相同的方式调用任意数量的函数,而无需定义其他类型或扩展上下文类。

如果我能通过这种模式遇到陷阱,请告诉我。 非常感谢你。