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 访问的问题 一定多去官网看下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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框架的用法!