官方文档: 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=&quot;DATA SOURCE=192.168.100.18:1521/gdaa;PASSWORD=gdaa;PERSIST SECURITY INFO=True;USER ID=GDCD&quot;" />
  
            <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  有类似的指导。

http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-2-connections-and-models.aspx

其他 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

           http://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework/Internal/LazyInternalContext.cs

internal class LazyInternalConnection : InternalConnection 源代码来源:

            http://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework/Internal/LazyInternalConnection.cs

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 的配置,文档的更多相关文章

  1. Entity Framework Core 中文入门文档

    点击链接查看文档: Entity Framework Core 中文入门文档

  2. Entity Framework 关系约束配置

    前言 简单的说一下自己的理解,大家应该都很明白ADO.NET,也就是原生态的数据库操作,直接通过拼接SQL语句,表与表之间通过链接(inner join  left join  或者子查询),也就是在 ...

  3. 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 ...

  4. Entity Framework Codefirst的配置步骤

    Entity Framework Codefirst的配置步骤: (1) 安装命令: install-package entityframework (2) 创建实体类,注意virtual关键字在导航 ...

  5. IIS配置文档

    IIS配置文档: 1.安装IIS.控制面板→程序→打开关闭Windows功能,Web管理服务和万维网服务都勾上. 2.部署网站:ASP.Net项目的发布:项目中点右键“发布”,选择“文件系统”,发布到 ...

  6. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  7. Oracle服务端及客户端搭建帮助文档

    Oracle服务端及客户端搭建帮助文档 目录 简介 Oracle服务端安装 Oracle客户端安装 PLSQL安装 登录测试 系统配置修改 用户操作 解锁账户.密码 创建账户及密码 配置监听文件 监听 ...

  8. nginx 安全配置文档

    1.配置文档中有多处明确写出了nginx的配置文件路径,该路径是测试环境中的路径,线上系统的nginx配置文件与文档中所写的路径可能不一样,在进行相关配置时,应以线上配置文件的实际路径为准. 线上系统 ...

  9. (转)nginx 安全配置文档

    原文:https://www.cnblogs.com/heaven-xi/p/9961357.html#top 1.配置文档中有多处明确写出了nginx的配置文件路径,该路径是测试环境中的路径,线上系 ...

随机推荐

  1. Thread 与 Runnable

    在Java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run() ...

  2. 开源面向对象数据库 db4o 之旅,第 1 部分: 初识 db4o

    前言 业界对持久存储领域的追求从未停止过,为了更方便.更容易地用对象表达我们的思维,开源领域和商业领域都涌现了许多新技术, ORM 的出现恰恰说明了这点.最近一年,业界也在反思,到底 ORM 给我们带 ...

  3. linux下如何安装charles

    charles是很好的抓包工具. 如何安装呢? 可以去官网下载:http://www.charlesproxy.com/download/ 如果是Debian系列的,可以直接用apt-get 安装 h ...

  4. nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored

    修改nginx配置参数后,使用nginx -t检查配置. 提示successfull后就可以使用 nginx -s reload来重新加载配置 我配置的过程中遇到这样的问题,就是绑定了主机名后,重新加 ...

  5. Linux下查看文件内容的命令

    查看文件内容的命令: cat     由第一行开始显示内容,并将所有内容输出 tac     从最后一行倒序显示内容,并将所有内容输出 more    根据窗口大小,一页一页的现实文件内容 less ...

  6. 点击自动显示/隐藏DIV代码。(简单实用)

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 很多时候我们需要将DIV的信息默认为隐藏状态,只有当用户点击时才显示DIV中包含的提示文字.这类效果在互联网上应用得很多,但实现的方 ...

  7. LYDSY模拟赛day3 涂色游戏

    /* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include < ...

  8. h5交互元素details标签

    details是h5新增的交互元素,details与 summary 标签配合使用可以为 details 定义标题.默认情况下,不显示 details 标记中的内容.当用户点击标题时,会显示出 det ...

  9. 微信 6.5.1 for iOS发布 可以在朋友圈分享相册中的视频

    今天微信 6.5.1 for iOS发布了,最主要的一个功能是可以在朋友圈分享相册中的视频,卖转发朋友圈视频软件的家伙估计要哭了.微信这次更新,更有利于个人号的运营,个人号的价值将更高.先定一个小目标 ...

  10. 全键盘Vimium快捷键学习记录

    0.设置而 vimium 的默认搜索引擎: http://www.baidu.com/s?wd= j: 向下细微滚动窗口.  k:向上细微滚动窗口. gg:跳转到页面的顶部.G:跳转到页面的底部.r: ...