ABP框架EF6链接Oracle数据库手动迁移

Posted 浮山山主

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABP框架EF6链接Oracle数据库手动迁移相关的知识,希望对你有一定的参考价值。

环境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB  + Oracle 11Gx32Client(PLSQL工具访问)

一、Abp项目的下载以及运行

1、创建abp项目。进入官网 https://aspnetboilerplate.com/下载项目模板。abp项目有两种架构,一种是单页面(angularjs),另一种是mvc的。点击创建按钮。入下图:

2、对下载的源码首先进行编译,让其自动下载Nuget项目依赖包,保证源码可以编译通过。

3、在WinRun2.Core项目中增加User.cs类:

     对User实体增加几个属性如下:

 3、在WinRun2.EntityFramework项目中对WinRun2DbContext类进行修改:

增加DbSet<User>: 

增加Oracle数据库的Schema(默认是dbo,Oracle数据库必须要修改): 

 

二、Oracle DB 对EF code first的支持

1、在WinRun2.EntityFramework项目增加Oracle EF 驱动的引用,在Nuget中进行安装:

 2、修改WinRun2.Web项目中Web.Config配置信息(也可以在WinRun2.Web中也安装Oracle.ManagedDataAccess的依赖包,就会自动在Config中生成Oracle配置信息)

 

 

三、创建Oracle数据库Schema

 1、首先要保证本地客户端可以链接到Oracle DB服务器,用DBA权限的账号使用Oracle开发工具或SQLPLUS创建新的Schema信息:

2、登录cps/oracle@winrun进行测试,查询所有Table:

3、配置Web.Config中的Oracle链接字符串:

    TNS配置:

    链接字符串配置:

 

四、实现数据迁移

1、add-migration:

2、update-database,此处报错了:

3、错误处理,原因是ODP.NET GAC (Global Assembly Cache)中不存在或版本不一致。

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.

注意路径,不同的系统版本(Win10)路径会不一样:"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.1 Tools\\gacutil.exe" /i Oracle.ManagedDataAccess.dll

4、再次update-database,还是报错了,不过换了一个错误:

4、此错误说明Oracle驱动已OK,链接登录时报错,再次解决该问题:

在链接字符串中增加Persist Security Info=true 即可。

5、再次迁移,成功了!

6、Oracle数据库的改变

 

迁移支持自增长类型(Oracle使用的Trigger+Sequences实现自增长ID)

 

参考链接:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/CodeFirst/index.html#overview

http://www.cnblogs.com/freeliver54/p/6951700.html

http://www.cnblogs.com/yuanbeier/articles/6420621.html

http://blog.csdn.net/yangxuilyx/article/details/52561874

https://stackoverflow.com/questions/32006884/entity-framework-seed-method-exception

http://www.cnblogs.com/haight/p/5600756.html

以上是关于ABP框架EF6链接Oracle数据库手动迁移的主要内容,如果未能解决你的问题,请参考以下文章

oracle 用户在 EF6 Code First 中创建数据库和执行挂起迁移的最低权限是啥

ABP 框架 数据库底层迁移 Mysql 集群

ABP框架数据迁移报错

abp 框架拓展mysql 迁移:增加数据库表和列备注

使用 EF6(和 Code First 迁移)针对不同的数据库系统

实体框架代码的动态连接字符串首先在运行时 EF6(mssql、mysql、oracle)中用于多个数据库提供程序