可以从DbContext访问DbConfiguration吗?

时间:2017-06-29 19:04:35

标签: c# .net entity-framework entity-framework-6

让我自己的EF DbContext派生类与我自己的DbConfiguration派生配置类相关联:

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyDbContext : DbContext
{
}

我试图从MyDbConfiguration内访问MyDbContext的实例。

(假设实际上 任何实例)。

E.g:

public class MyDbConfiguration : DbConfiguration
{
    public int SomeProperty { get; set; }
}

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyDbContext : DbContext
{
    public int SomeMethod()
    {
        // This lines fails to compile:
        var config = (MyDbConfiguration)Configuration;

        config.SomeProperty = 42;
    }
}

编译错误是:

  

无法转换类型' System.Data.Entity.Infrastructure.DbContextConfiguration'到' MyDbConfiguration'。

显然,这两种类型之间没有直接关系。

我很可能完全误解了这个实体框架配置,这个问题是XY problem。我还是想问一下:

我的问题:

有没有办法从DbConfiguration内访问DbContext

如果没有,是否可能反过来?即从DbContext

中访问DbConfiguration

(此问题与EFCache issue #14

有关

1 个答案:

答案 0 :(得分:0)

由于无法找到直接答案,a workaround suggested by the EFCache author在我的情况下帮助了我:

  

只需在静态变量中存储对缓存的引用,然后再将其传递给CacheTransactionHandler c,然后您就可以从任何地方访问它。缓存实际上是单身,所以我不认为这样做有任何问题。

不是我希望的最好的解决方案,并且stil完美运行。