2017-06-29 35 views
2

和我自己的DbConfiguration派生配置类关联我自己EF DbContext派生类:可能从DbContext访问DbConfiguration?

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

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

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

如:

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。我依然亲切地试图问它:

我的问题:

有什么办法到DbContext内访问来自DbConfiguration

如果没有,是否有可能相反?即从DbConfiguration访问DbContext

(这个问题是关系到EFCache issue #14

回答

0

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

只是为了缓存的引用在一个静态变量,你之前存储将它传递给CacheTransactionHandler c'tor,然后你应该可以从任何地方访问它。缓存实际上是单身,所以我不认为这样做有任何问题。

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