实体框架种子方法异常 [英] Entity Framework Seed method exception

查看:579
本文介绍了实体框架种子方法异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用具有针对Oracle数据库的MVC5 webapi2项目的Entity Framework 6。



我尝试在Seed方法中添加一些ApplicationRoles,但是当我执行update-database我得到这个例外:


运行种子方法。
System.Runtime.Serialization.SerializationException:对于成员'Oracle.ManagedDataAccess.Client.OracleException,Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342',类型未解析。
在System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
在System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner转轮)
在System.Data.Entity.Migrations.Design .ToolingFacade.Update(String targetMigration,Boolean force)
在System.Data.Entity.Migrations.UpdateDatabaseCommand。c__DisplayClass2。< .ctor> b__0()
在System.Data.Entity。 Migrations.MigrationsDomainCommand.Execute(Action命令)
成员'Oracle.ManagedDataAccess.Client.OracleException,Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,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 正在创建我的表没有任何问题,这只是Seed方法有一个问题。



有没有人有什么问题可以请问什么? >

谢谢。

解决方案

将Oracle.ManagedDataAccess.dll安装到GAC解决了我的问题。如果您的机器上安装了Oracle Client或Oracle数据库,可能是原因。

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

C:\Windows\system32> e:

E:\smn\packages\Oracle.ManagedDataAccess.12.1.021\lib\\\
et40>C:\Program Files(x86)\Microsoft SDKs\Windows\v8.1A\bin \NETFX 4.5.1 Tools\gacutil.exe/ i Oracle.ManagedDataAccess.dll
Microsoft(R).NET全局程序集缓存实用程序。版本4.0.30319.33440
版权所有(c)微软公司。版权所有。

装配成功添加到缓存


I am using Entity Framework 6 with an MVC5 webapi2 project against an Oracle database.

I am trying to add some ApplicationRoles in the Seed method, but when I execute update-database I get this exception:

Running Seed method. System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Oracle.ManagedDataAccess.Client.OracleException,Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342'. at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force) at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) Type is not resolved for member 'Oracle.ManagedDataAccess.Client.OracleException,Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342'.

My code in the Seed method:

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 is creating my tables without any problem, it's just the Seed method which has a problem.

Does anyone have any suggestions as to what the problem could be please?

Thanks.

解决方案

Installing Oracle.ManagedDataAccess.dll to GAC resolved my issue. If you installed Oracle Client or Oracle Database on your machine that might be the cause.

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

这篇关于实体框架种子方法异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆