2015-08-14 100 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