如何将 Automapper 与 EntityFramework 6.1.3 结合使用来投影自定义 (UDF) DbFunciton 调用?

How could one use Automapper with EntityFramework 6.1.3 to project custom (UDF) DbFunciton calls?

我正在使用这个 Nuget 库:

EntityFramework.CodeFirstStoreFunctions

有这个代码:

public abstract class DbCore : DbContext {
     [DbFunction("CodeFirstDatabaseSchema", "DecodeBase64")]
     public static string DbDecodeBase64(string encoded) {
          throw new NotSupportedException();
     }

     protected override void OnModelCreating(DbModelBuilder modelBuilder) {
          modelBuilder.Conventions.Add(new FunctionsConvention("dbo"));
          base.OnModelCreating(modelBuilder);
     }
}

当我 运行 此代码使用投影时:

</code>IMappingExpression mapperExpression = ...(omitted)
mapperExpression.ForMember(dest => dest.ContactNote, opt => opt.MapFrom(entity => DbCore.DbDecodeBase64(entity.ContactNote)));</pre>

<p>然后我有一个 SQL 函数 (UDF) 调用:<code>DecodeBase64

我所做的一切都是正确的,但是我的 LINQ 正在生成一个不再是 IQueryable 的对象,这导致这些函数不是 called/generated 和 SQL。

所以,简而言之。问题就是答案,如果您对此有任何疑问,请确保您在调用这些函数时仍在使用 IQueryable 对象。