2017-06-29 65 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運行完美。