2017-08-11 25 views
0

試圖與WCF服務第一次使用EF 6碼,但遇到了以下運行時錯誤:首先在EF6代碼的WCF服務中設置DbConfiguration的位置?

The default DbConfiguration instance was used by the Entity Framework before the 'MyConfiguration' type was discovered. An instance of 'MyConfiguration' must be set at application start before using any Entity Framework features or must be registered in the application's config file. See http://go.microsoft.com/fwlink/?LinkId=260883 for more information.

試圖實例以下的DbContext服務調用內時,此錯誤被拋出:

[DbConfigurationType(typeof(MyConfiguration))] 
public partial class MyContext : DbContext 
{ 
    public MyContext() 
     : base("name=MyContext") 
    { 
    } 
} 

public class MyConfiguration : DbConfiguration 
{ 
    public MyConfiguration() 
    { 
     SetExecutionStrategy(MySqlProviderInvariantName.ProviderName,() => new MySqlExecutionStrategy()); 
     SetDefaultConnectionFactory(new MySqlConnectionFactory()); 
     AddDependencyResolver(new MySqlDependencyResolver()); 
    } 
} 

這個WCF服務還有其他的DbContexts在這個類甚至被訪問之前使用,所以錯誤信息是非常有意義的。問題是應該在哪裏設置配置?

+0

它應該在WCF服務的配置,作爲最後它是應用程序,這是運行,從而具有有效的配置。請參考:[this](https://msdn.microsoft.com/en-us/library/jj556606(v = vs.113).aspx)和[this](https://stackoverflow.com/questions/20354083/ef6-and-multiple-configurations-sql-server-and-sql-server-compact) –

+0

刪除'[DbConfigurationType(typeof(MyConfiguration))]'',再試一次。 –

+0

謝謝,問題似乎是由項目中已經創建的其他EF上下文引起的。將不得不做更多的研究來找出解決方案。 –

回答

0

上創建MyContext一個構造如下:

public MyContext(DbConnection dbConnection, bool contextOwnsConnection) 
    : base(dbConnection, contextOwnsConnection) 
{ 
} 

然後手動供給的MySqlConnection:

var connection = new MySqlConnection(connectionString); 
connection.Open(); 
var context = new MyContext(connection, true); 
相關問題