Oracle 与 entity framework 6 的配置,文档
官方文档: http://docs.oracle.com/cd/E56485_01/win.121/e55744/intro001.htm#ODPNT123
Oracle 对 微软 实体框架 EF6 的支持,在 ODP.NET 的新版本中才有实现。
Oracle Data Access Components (ODAC) Windows 下载: ODAC 12c Release 3
包括支持 Entity Framework 6 Code First and Code First Migrations; NuGet 包,
.NET Framework 4.5.2; and ODP.NET, Managed Driver XML DB.
http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
第一部分: 使用 VS 的菜单进行配置。
实践很多次, 成功建立 实体数据集: 必须在 VS2013 UPDATE4 安装完成后,安装
1) 32-bit ODAC with Oracle Developer Tools for Visual Studio Downloads
2) 在建立 VS 解决方案后, 安装 ORACLE 的 NuGet 包 (两个包)。 --- 通过 包管理器。
这样才能 在解决方案的项目配置 文件 APP.config 或者 WEB.config 中创建一些配置信息!!!
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
完成上述两步骤,就可以 新增: ADO。NET 实体数据模型,来引用 ORACLE 数据库。
依据 是EF 设计器 或者 Code First 代码优先,会在 APP.config 或者 WEB.config 产生一个 连接字符串
<add name="CDEntities" providerName="System.Data.EntityClient" connectionString="metadata=res://*/Model.CDDBModel.csdl|res://*/Model.CDDBModel.ssdl|res://*/Model.CDDBModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=192.168.100.18:1521/gdaa;PASSWORD=gdaa;PERSIST SECURITY INFO=True;USER ID=GDCD"" />
<add name="HPModel" providerName="Oracle.ManagedDataAccess.Client" connectionString="DATA SOURCE=192.168.100.18:1521/gdaa;PASSWORD=gdaa;PERSIST SECURITY INFO=True;USER ID=GDAA"/></connectionStrings>
特别的问题是:如果是ASPNET MVC,将数据库模型Model 单独作为一个:DLL 类库 项目, VC 作为一个MVC 项目,则创建过程有一定要求:
1) 首先创建 DLL 类库 项目 解决方案,增加 ORACLE 的专用NUGET 包,然后 新增: ADO.NET 实体数据模型;
2) 再创建一个 ASPNET MVC 解决方案,增加 ORACLE 的专用NUGET 包;
3) 将 数据模型方案的项目 引入 MVC 方案中, 复制 数据模型方案的 APP.CONFIG 中链接连接字符串 <add name="XXXXX" ......,增加到 MVC方案的WEB.CONFIG 中.
主要是由于,数据模型上下文 DBCONTEXT 在 MVC 代码中实例化时,获取 链接连接字符串 必须是当前 方案的配置文件。
============================================================================
第二部分 如何使用代码 进行连接。
上述都是通过 配置文件 APP.config 或者 WEB.config 的连接字符串connectionString 。实体上下文 DbContext 继承类 的构造函数,传入 “链接字符名称” ,使用 :Base("name =connectionString") 的方式 ,这种方式是利用 IIS 启动或者实例化时,通过 读取配置文件的连接信息。
下面重点收集,如何通过代码进行 实体上下文 DbContext 的实例化,即需要使用 XXDbContext db = new XXDbContext(connstring) 时 ,如何传入连接字符串?
1)官方网站 EF 有提到:https://msdn.microsoft.com/en-US/data/ef 源代码网: http://entityframework.codeplex.com/
此处的最后有专门谈到如何通过代码进行连接, https://msdn.microsoft.com/en-us/data/jj592674
比较老的BLOG Using DbContext in EF 4.1 Part 2: Connections and Models 有类似的指导。
其他 DbContext 构造函数选项:DbContext 类包含支持其他一些更高级方案的其他构造函数和使用模式。其中一些选项有:
- 可以使用 DbModelBuilder 类构建 Code First 模型,而不实例化 DbContext 实例。这样会生成 DbModel 对象。随后,在准备好创建 DbContext 实例时,可以将此 DbModel 对象传递给某一 DbContext 构造函数。
- 可以将完整连接字符串传递给 DbContext,而不仅仅传递数据库或连接字符串名称。此连接字符串默认用于 System.Data.SqlClient 提供程序;可以通过在 context.Database.DefaultConnectionFactory 上设置不同的 IConnectionFactory 实现来更改此行为。
特别说明:官方文档显示,此属性已过时,从系统中实例化的上下文对象中也不能找到此!!! https://msdn.microsoft.com/zh-cn/library/system.data.entity.database.defaultconnectionfactory(v=vs.113).aspx 需要寻找其它改进的方式。
- 可以通过将现有 DbConnection 对象传递给 DbContext 构造函数来使用该对象。如果连接对象是 EntityConnection 的实例,则将使用连接中指定的模型,而不使用 Code First 计算模型。如果该对象是其他某一类型(例如 SqlConnection)的实例,则上下文将在 Code First 模式下使用该对象。
============================================
第三部分:DBCONTEXT 的构造方法之一 ,使用连接字符串进行初始化。
DbContext 源代码来源于: http://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework/DbContext.cs
LazyInternalContext 源代码来源:继承于 internal class LazyInternalContext : InternalContext
internal class LazyInternalConnection : InternalConnection 源代码来源:
public DbContext(string nameOrConnectionString) {
Check.NotEmpty(nameOrConnectionString, "nameOrConnectionString");
InitializeLazyInternalContext(new LazyInternalConnection(this, nameOrConnectionString));
}
internal virtual void InitializeLazyInternalContext(IInternalConnection internalConnection, DbCompiledModel model = null) {
DbConfigurationManager.Instance.EnsureLoadedForContext(GetType());
_internalContext = new LazyInternalContext( this, internalConnection, model ,
DbConfiguration.DependencyResolver.GetService<Func<DbContext, IDbModelCacheKey>>() ,
DbConfiguration.DependencyResolver.GetService<AttributeProvider>() );
DiscoverAndInitializeSets();
}
Oracle 与 entity framework 6 的配置,文档的更多相关文章
- Entity Framework Core 中文入门文档
点击链接查看文档: Entity Framework Core 中文入门文档
- Entity Framework 关系约束配置
前言 简单的说一下自己的理解,大家应该都很明白ADO.NET,也就是原生态的数据库操作,直接通过拼接SQL语句,表与表之间通过链接(inner join left join 或者子查询),也就是在 ...
- Web Api 2, Oracle and Entity Framework
Web Api 2, Oracle and Entity Framework I spent about two days trying to figure out how to expose the ...
- Entity Framework Codefirst的配置步骤
Entity Framework Codefirst的配置步骤: (1) 安装命令: install-package entityframework (2) 创建实体类,注意virtual关键字在导航 ...
- IIS配置文档
IIS配置文档: 1.安装IIS.控制面板→程序→打开关闭Windows功能,Web管理服务和万维网服务都勾上. 2.部署网站:ASP.Net项目的发布:项目中点右键“发布”,选择“文件系统”,发布到 ...
- MYSQL服务器my.cnf配置文档详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
- Oracle服务端及客户端搭建帮助文档
Oracle服务端及客户端搭建帮助文档 目录 简介 Oracle服务端安装 Oracle客户端安装 PLSQL安装 登录测试 系统配置修改 用户操作 解锁账户.密码 创建账户及密码 配置监听文件 监听 ...
- nginx 安全配置文档
1.配置文档中有多处明确写出了nginx的配置文件路径,该路径是测试环境中的路径,线上系统的nginx配置文件与文档中所写的路径可能不一样,在进行相关配置时,应以线上配置文件的实际路径为准. 线上系统 ...
- (转)nginx 安全配置文档
原文:https://www.cnblogs.com/heaven-xi/p/9961357.html#top 1.配置文档中有多处明确写出了nginx的配置文件路径,该路径是测试环境中的路径,线上系 ...
随机推荐
- Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法。
Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法. 在本地计算机无法启动MYSQL服务错误1067进程意外终止.这种情况一般是my.ini文件配置出错了1.首 ...
- Effective Objective-C 2.0 — 第一条:了解Objective-C语言的起源
第一条: 了解Objective-C语言的起源 由Smalltalk演化而来,消息型语言的鼻祖(messaging structure)而非 (function calling)函数调用 //Mess ...
- java 获取文件的最后编辑时间
还是日志的问题,需要把日志文件的一些信息给显示出来,其中就需要显示最后的编辑时间,在网上找的答案... File f = new File(path); SimpleDateFormat sdf = ...
- Navicat For Mysql快捷键
1.ctrl+q 打开查询窗口 2.ctrl+/ 注释sql语句 3.ctrl+shift +/ 解除注释 4.ctrl+r 运行查询窗 ...
- jquery mobile常用的data-role类型 data-icon data-iconpos
文章链接: http://blog.csdn.net/cainiaoxiaozhou/article/details/48521241
- wamp包--如何导出sql
在windows下安装wamp,如果不想用phpmyadmin工具和其他工具,如何导出自己想要的sql呢. 比如:我想导出blogyaf库,可以从以下步骤进行操作. 1,进入到wamp的mysql安装 ...
- shell学习之路:流程控制(if)
1.单分支if条件语句 if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 注意事项: 1.if语句使用fi结尾,和一般语言使用大括号结尾不同 2.[ ...
- 大熊君大话NodeJS之------Global Objects全局对象
一,开篇分析 在上个章节中我们学习了NodeJS的基础理论知识,对于这些理论知识来说理解是至关重要的,在后续的章节中,我们会对照着官方文档逐步学习里面的各部分模块,好了该是本文主角登台亮相的时候了,G ...
- Express开发实例(2) —— Jade模板引擎
前一篇通过helloworld,简单介绍了Express中的开发,本篇继续深入的学习express的模板. 关于Jade的用法,网上有很多,本篇参考:Jade语法 安装相关模块 在实验代码前,应该先安 ...
- 【Solr】copy字段的应用
目录 界面查询应用 熟悉Schema.xml copy域的应用 回到顶部 界面查询应用 添加一个文档 查询添加的文档 以上详细介绍了query里面的参数详解. 当不输入任何条件时,进行查询,看看返回结 ...