2015-08-14 101 views
4

我正在使用實體框架6與MVC5 webapi2項目對Oracle數據庫。實體框架種子方法異常

我試圖在種方法中添加一些ApplicationRoles,但是當我執行更新的數據庫,我得到這個異常:

運行種子法。 System.Runtime.Serialization.SerializationException:未針對成員'Oracle.ManagedDataAccess.Client.OracleException,Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'解析類型。 at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration,Boolean)System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 強制) 在System.Data.Entity.Migrations.UpdateDatabaseCommand。 <> c__DisplayClass2。 < .ctor> b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 未針對成員Oracle.ManagedDataAccess.Client.OracleException,Oracle.ManagedDataAccess,Version = 4.121.2.0,文化=中立,PublicKeyToken = 89b483f429c47342'。

我在種方法代碼:

var roleStore = new RoleStore<IdentityRole>(context); 
var roleManager = new RoleManager<IdentityRole>(roleStore); 

if (!context.Roles.Any(r => r.Name == "USER")) 
{ 
    var role = new IdentityRole("USER"); 
    roleManager.Create(role); 
} 

update-database沒有任何問題是創造我的表,它只是其中有一個問題種子的方法。

有沒有人有什麼建議可以解決問題?

謝謝。

回答

5

將Oracle.ManagedDataAccess.dll安裝到GAC解決了我的問題。如果您的機器上安裝了Oracle Client或Oracle Database,可能是原因。

C:\Windows\system32>cd E:\smn\packages\Oracle.ManagedDataAccess.12.1.021\lib\net40 

C:\Windows\system32>e: 

E:\smn\packages\Oracle.ManagedDataAccess.12.1.021\lib\net40>"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe" /i Oracle.ManagedDataAccess.dll 
Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.33440 
Copyright (c) Microsoft Corporation. All rights reserved. 

Assembly successfully added to the cache 
+0

請注意,您不需要使用上面顯示的gacutil路徑(特別是那些沒有顯示sdk的路徑)。如果您安裝了VS,只需使用開發人員提示即可。 'gacutil'在路上。 – Smudge202