VS2010使用EF点滴

一、安装NuGet Package Manager

首先,需要安装一个vs插件,名称为NuGet Package Manager,微软官方发布的,其作用就是为vs工程项目自动下载、安装、升级、配置和移除包。
操作步骤:打开vs2012,然后工具->扩展管理器,搜索NuGet,找到安装即可,安装完毕需要重新启动vs2010.
注意:此插件需要PowerShell 2.0,win7和server2008已自带,如果你还在用xp,那么需要先下载安装此前置系统组件.

 

二、安装EntityFramework

vs2010--> 工具--> 库程序包管理器--> 程序包管理器控制台,打开控制台

程序包管理器控制台主机版本 2.1.31002.9028 键入“get-help NuGet”以查看所有可用的 NuGet 命令。 

PM> 

在PM>后输入 
  Install-Package EntityFramework
,然后会得到出错提示 【 PM> Install-Package EntityFramework Install-Package : 当前环境未打开任何解决方案。 所在位置 行:1 字符: 16 】也即,需要在一个工程项目中使用此方式,新建一个c#控制台应用程序,命名为EFDemo,再执行如上操作,会在线下载最新稳定版本(现在是2015年5月最新是6.1.3)并安装,成功则结果如下:

PM> Install-Package EntityFramework 已成功安装“EntityFramework 6.1.3”。 已成功将“EntityFramework 6.1.3”添加到 EFDemo。 
Type 'get-help EntityFramework' to see all available Entity Framework commands. 

安装后的变化 上述操作执行完毕后,会发现项目变化

1.新增了一个packages.config文件

<?xml version="1.0" encoding="utf-8"?> 
<packages>
  <package id="EntityFramework" version="5.0.0" targetFramework="net40-Client" />
</packages>

2.app.config文件中根节点中新增了一行配置(从配置文件来看,所说的5.0,实际内部版本号是4.4)

<configSections> 
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
  <section name="entityFramework" 
    type
="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    requirePermission
="false" />
</configSections>

3.项目引用下新增了一个EntityFramework,指向c:\*****\EFStudy\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll(EFStudy为解决方案名称)

4.该项目所在的解决方案下增加了名为“packages”的目录,里面存放包括dll在内的与ef5.0相关的文件。

按照如上步骤,可以在vs2010上安装EF最新版。

 

三、 若要安装指定的EF版本,如5.0.0,则在下执行
      PM> Install-Package EntityFramework -Version 5.0.0
即可。注意安装之前要使用
  PM> Uninstall-Package EntityFramework
将之前的EntityFramework删除掉才可以。

 

四、Entity Framework6 with Oracle(可实现code first)

  Oracle 于2015年2月刚提供对EF6的支持。以前只支持到EF5。EF6有很多有用的功能 值得升级。这里介绍下如何支持Oracle

1.Oracle 对.net支持的一些基础知识了解介绍。

  • 1.早年的时候,微软自己做的有 System.Data.OracleClient。 现在已经成了过期类了。性能等都不是很好。
  • 2.Oracle 官方出的odp.net  Oracle.DataAccess.dll(非托管版本) 还要分32/64位。而且很麻烦的是 部署的时候 需要装客户端环境。非常繁琐。
  • 3.Oracle 官方近年新出的  Oracle.ManagedDataAccess.dll  这个非常给力 不再区分32/64位了。 而且不需要客户端再安装东西了。性能也得到了提高。不管是用ado.net或者其他ORM框架都建议使用此版本dll。这次我们的EF6 也会依据此dll进行开发。 

官方下载地址是这个
  http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

下载好后  从这个目录下 odp.net\managed\common  拿出2最关键的dll
  Oracle.ManagedDataAccess.dll 和 Oracle.ManagedDataAccess.EntityFramework.dll  

2.修改webconfig配置文件

加入如下代码:

复制代码
 
<configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!--<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />-->  
  </configSections>

  <entityFramework>
    <defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory,
Oracle.ManagedDataAccess.EntityFramework,
Version=6.121.2.0,
Culture=neutral,
PublicKeyToken=89b483f429c47342" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
     
    </providers>
  </entityFramework>

  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
          type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
 
复制代码

 

连接字符串如下 记得提供下 providerName 为 Oracle.ManagedDataAccess.Client

复制代码
 
 <connectionStrings>

    <add name="OraString" connectionString="Data Source= (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = *****)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  );User ID=*****;Password=*****;Persist Security Info=True" providerName="Oracle.ManagedDataAccess.Client" />

  </connectionStrings>
 
复制代码

  

这里还有个注意事项,因为有的人以及装了oracle的客户端。这可能会导致一些错误。这里 请注意检查下  C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config

下的  machine.config (64位的话 路径是 Framework64,最好都检测下)

machine.config 可以理解为webconfig的父类 所以我们需要检查下里面的内容  是否有

 <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

这样的内容   如果有  修改版本号Version 为当前Oracle.ManagedDataAccess.Client版本。 

 

3.注意事项

  • 1.访问时提示表不存在,有可能权限不够。需要设置默认的Schema 需要在 OnModelCreating设置 modelBuilder.HasDefaultSchema(“Schema名”);
  • 2.oracle 的配置是否配置了使用ora方式来访问。 建议先不使用ora方式,有可能是这个方式访问导致的问题。
  • 3.oracle 访问的问题 一定多去官网看下。

 

posted @   张疯牛  阅读(1425)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
石家庄坦图计算机科技有限公司 石家庄市丰收路220号泽润大厦17层
点击右上角即可分享
微信分享提示