【问题标题】:Entity Framework: Disabling EFCachingProvider For Stored Procedures实体框架:为存储过程禁用 EFCachingProvider
【发布时间】:2011-08-19 15:19:14
【问题描述】:

EFCachingProvider 在调用存储过程时会产生以下错误:

System.NotSupportedException:命令树类型 System.Data.Common.CommandTrees.DbFunctionCommandTree 不是 支持。

但是即使你创建了一个单独的上下文并且没有在上面设置缓存,错误仍然存​​在。

我们的 ObjectContext 上有以下构造函数:

public ExtendedEntities(string connectionString, params string[] wrapperProviders)
    : base(EntityConnectionWrapperUtils.CreateEntityConnectionWithWrappers(connectionString, wrapperProviders))
{
}

大多数查询都使用以下方法成功执行:

ExtendedEntities context = new ExtendedEntities(settings.EntitiesConnectionString, "EFTracingProvider", "EFCachingProvider"))
context.Cache = ...;
context.CachingPolicy = ...;

存储过程调用现在正在使用:

new ExtendedEntities(settings.EntitiesConnectionString, "EFTracingProvider");

但问题仍然存在?

【问题讨论】:

    标签: .net asp.net-mvc entity-framework


    【解决方案1】:

    我认为您应该考虑使用实体类的非扩展版本来调用 SP,因为包装器不喜欢 SP 的命令树结构。

    在像你这样的情况下,我会执行以下操作:

    使用上下文作为新的 MyEntities

    context.DoSomethingHERE()
    

    结束使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 2016-09-18
      • 1970-01-01
      相关资源
      最近更新 更多