- 浏览: 1024426 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
从Code MSDN上下载下来的EFOracleProvider不支持Oracle9i.但是,目前我所使用的还是Oracle9i。为此,对EFOracleProvider修改了以下,以便使其支持Oracle9i.
下面说说具体修改地方.(红色部分为添加或修改的代码部分)
一,修改EFOracleProvider
1,修改EFOracleProviderManifest.cs类文件,
internal const string TokenOracle9i = "9i";//add by xray2005
internal const string TokenOracle10g = "10g";
internal const string TokenOracle11g = "11g";
以下两个地方,不修改也是可以的.但考虑目前我主要是使用9i,所以也就修改成9i了.
private EFOracleVersion _version = EFOracleVersion.Oracle9i; //EFOracleVersion.Oracle11g;
private string _token = TokenOracle9i; //TokenOracle10g;
2,修改EFOracleVersion.cs类文件,如下代码所示:
namespace EFOracleProvider
{
using System;
/// <summary>
/// This enum describes the current storage version
/// </summary>
internal enum EFOracleVersion
{
Oracle9i = 9, //add by xray2005
/// <summary>
/// Oracle10g
/// </summary>
Oracle10g = 10,
/// <summary>
/// Oracle 11g
/// </summary>
Oracle11g = 11,
// higher versions go here
}
/// <summary>
/// This class is a simple utility class that determines the version from the
/// connection
/// </summary>
internal static class EFOracleVersionUtils
{
/// <summary>
/// Get the version from the connection.
/// </summary>
/// <param name="connection">current connection</param>
/// <returns>version for the current connection</returns>
internal static EFOracleVersion GetStorageVersion(EFOracleConnection connection)
{
string serverVersion = connection.ServerVersion;
if (serverVersion.StartsWith("9."))
{
return EFOracleVersion.Oracle9i; //add by xray2005
}
else if (serverVersion.StartsWith("10."))
{
return EFOracleVersion.Oracle10g;
}
else if (serverVersion.StartsWith("11."))
{
return EFOracleVersion.Oracle11g;
}
throw new ArgumentException("Could not determine storage version; " +
"a valid storage connection or a version hint is required.");
}
internal static string GetVersionHint(EFOracleVersion version)
{
switch (version)
{
case EFOracleVersion.Oracle9i:
return EFOracleProviderManifest.TokenOracle9i; //add by xray2005
case EFOracleVersion.Oracle10g:
return EFOracleProviderManifest.TokenOracle10g;
case EFOracleVersion.Oracle11g:
return EFOracleProviderManifest.TokenOracle11g;
default:
throw new ArgumentException("Could not determine storage version; " +
"a valid storage connection or a version hint is required.");
}
}
internal static EFOracleVersion GetStorageVersion(string versionHint)
{
if (!string.IsNullOrEmpty(versionHint))
{
switch (versionHint)
{
case EFOracleProviderManifest.TokenOracle9i:
return EFOracleVersion.Oracle9i; //add by xray2005
case EFOracleProviderManifest.TokenOracle10g:
return EFOracleVersion.Oracle10g;
case EFOracleProviderManifest.TokenOracle11g:
return EFOracleVersion.Oracle11g;
}
}
throw new ArgumentException("Could not determine storage version; " +
"a valid storage connection or a version hint is required.");
}
internal static bool IsVersionX(EFOracleVersion storageVersion)
{
return storageVersion == EFOracleVersion.Oracle9i || storageVersion == EFOracleVersion.Oracle10g ||
storageVersion == EFOracleVersion.Oracle11g; //add by xray2005
}
}
}
二,使用EFOracleProvider
修改完毕后,编译一下.如果是自己下载的源代码编译的,那么编译后的EFOracleProvider自动已经在GAC注册了.如果是手动注册EFOracleProvider到GAC,那么命令如下:
gacutil –I “EFOracleProvider.dll”
其中gacutil.exe位于:系统盘符号:\Program Files\Microsoft SDKs\Windows\v6.0A\bin下面。
接下来,我们需要做的就是,把这个EFOracleProvider添加到Machine.config中.
第一步,找到Machine.config文件.该文件的位置在:
系统盘符号:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG下面.
第二步,用打开Machine.config文件,在DbProviderFactories配置节点,增加EFOracleProvider的配置,如下所示:
<DbProviderFactories>
<add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
<add name="EF Oracle Data Provider" invariant="EFOracleProvider" description="EF Provider for Oracle" type="EFOracleProvider.EFOracleProviderFactory,EFOracleProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
</DbProviderFactories>
第三步,保存即可.
接下来,简单的介绍一下,如何使用这个EFOralceProvider.
第1步:在命令行窗口,将目录定位到提示符, 系统盘符:\WINDOWS\Microsoft.NET\Framework\v3.5.如下所示(是我电脑上的目录):
第2步,输入相应的生成参数.如下图所示:
将“data source=test;user id=xray;password= 123”成你自己的对应的参数即可.
确定之后,就可以看到生成的结果了,同时会有写信息出来,如下示:
至此,EdmGen就为我们生成需要的文件.生成的文件如下所示:
l TestEFModel.csdl
l TestEFModel.msl
l TestEFModel.ssdl
l TestEFModel.ObjectLayer.cs
l TestEFModel.Views.cs
然后,通过EdmGen2工具, 使用刚刚生成的TestEFModel .csdl, TestEFModel .msl, TestEFModel .ssdl三个文件来生成一个模型.
命令如下:
Edmgen2.exe /toedmx TestEFModel.csdl TestEFModel.msl TestEFModel.ssdl
确定之后,该工具就会为我们生成一个TestEFModel.edmx文件了.
然后,把这个文件加入到我们的项目中,同时修改项目的App.Config文件连接字符串,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="NorthwindEFModelContext"
connectionString="provider=EFOracleProvider;
metadata=res://*/TestEFModel.csdl|res://*/TestEFModel.ssdl|res://*/TestEFModel.msl;
Provider Connection String='data source=test;user id=xray;password=1111'"
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
最后保存. 至此,修改EFOracleProvider并使用,介绍完毕。 最后提供几个连接,以方便大家学习研究:
l Code.MSDN上的EFOracleProvider;
l 经过我修改后,支持Oracle9i的EFOracleProvider.dll
l EdmGen2.exe
http://www.cnblogs.com/xray2005/archive/2009/06/05/1496740.html
发表评论
-
C# LINQ to SQL
2017-07-28 12:48 6811、Concat(连接不同的集合不会自动过滤相同项。会延迟计 ... -
基于 EntityFramework 的数据库主从读写分离服务插件
2017-03-08 15:06 11751. 版本信息和源码 1.1 版本信息 v1.01 be ... -
EF6(CodeFirst)+MySql开发
2017-01-06 14:08 1574如题,本文是使用EntityFramework6框架的感悟( ... -
<Entity Framework> - 直接执行数据库命令
2016-08-10 15:00 1559使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库 ... -
EntityFramework执行SQL语句
2016-08-10 14:58 1050在EF中执行Sql语句。 Insert Code: ... -
EntityFramework 执行SQL语句进行参数化查询代码示例
2016-08-10 14:59 1927在我们用EntityFramework时,一般情况下我们是要 ... -
Entity Framework 学习中级篇—EF支持复杂类型的实现
2011-07-05 16:56 12711http://www.cnblogs.com/xray20 ... -
Entity Framework 学习初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateMa
2011-07-05 16:55 6955本节,简单的介绍EF中的 ObjectContext ... -
Entity Framework 学习初级篇--EF基本概况
2011-07-05 16:53 3707自从Entity Framework(EF ... -
Entity Framework 学习高级篇—改善EF代码的方法
2011-07-05 16:39 10164本节,我们将介绍一些改善EF代码的相关方法,如NoTrac ... -
Entity Framework 学习总结之十一:POCO
2011-06-30 11:24 12109POCO Entity Framework ... -
Entity Framework 学习总结之十:加载相关对象
2011-06-30 11:23 3819加载相关对象 实体类型可以定义在数据模型中表 ... -
Entity Framework 学习总结之九:LinqToEntities
2011-06-30 11:22 1654介绍 LINQ to Entities ... -
Entity Framework 学习总结之八:EntitySQL 复杂查询及函数
2011-06-30 11:21 2976复杂查询及函数 外键 Entity ... -
Entity Framework 学习总结之七:EntitySQL 基本查询
2011-06-30 11:20 2131Entity SQL 基本查询 SW ... -
Entity Framework 学习总结之六:EntitySQL 介绍入门
2011-06-30 11:19 2050Entity SQL Language 简介 ... -
Entity Framework 学习总结之五:EntityClient
2011-06-30 11:18 3528System.Data.EntityClient E ... -
Entity Framework 学习总结之四:对象服务介绍使用
2011-06-30 11:18 3096System.Data.Objects (System ...
相关推荐
- EF不仅支持SQL Server,还可以通过适配器与其他数据库系统,如Oracle 9i,进行交互。 12. **改善EF代码的方法**(高级篇1-2): - 高级篇主要探讨如何优化EF代码,可能包括使用Poco(Plain Old CLR Objects)...
EF还支持复杂类型的实现和存储过程的使用,以及如何使EF支持Oracle9i数据库。 随着学习的深入,会涉及到如何改善EF代码,包括一些高级技巧和方法,以优化代码结构和性能。在学习结束后,通常会有一个总结,强调学习...
3. 使EF支持Oracle9i:展示了如何配置和使用EF与非SQL Server的数据库系统,如Oracle,扩展了EF的适用范围。 高级篇进一步讨论了提升EF代码质量和性能的策略: 1. 改善EF代码的方法:可能包括使用Code First开发、...
中级篇深入探讨了EF的一些高级主题,包括支持复杂类型的实现、存储过程的使用、以及如何让Entity Framework支持Oracle9i等不同的数据库系统。存储过程的使用涉及如何将EF映射到数据库中的存储过程,以及如何通过EF...
这部分展示了如何使EF与Oracle9i数据库协同工作。 ### 高级篇 1. **改善EF代码的方法**:这部分探讨了如何优化EF代码,提高性能,减少内存占用,以及如何处理并发控制和事务管理等高级话题。 在实际开发中,掌握...
中级篇的第五部分介绍了如何使EF支持Oracle9i,展示了EF的跨数据库平台能力。 高级篇主要关注优化和改善EF代码的方法,包括代码重构和性能提升技巧,这对于大型项目和高性能应用至关重要。 最后的结束语可能对学习...
#### 十一、使 EF 支持 Oracle9i - **介绍**: 解释如何配置和使用 EF 以支持 Oracle 数据库。 - **配置**: 包括 Oracle 数据库连接字符串设置、数据提供程序选择等。 #### 十二、改善 EF 代码的方法 - **上篇**: ...
#### 十三、使 EF 支持 Oracle9i - 为了使 EF 支持 Oracle 数据库,需要安装相应的 Oracle 数据提供程序,并配置 Entity Framework 以使用该提供程序。 #### 十四、改善 EF 代码的方法 - **代码优化** 包括提高查询...
尽管EF最初主要针对SQL Server设计,但随着发展,它已经扩展到支持多种数据库系统,包括Oracle9i。开发者可以使用EF来访问和操作Oracle数据库,但可能需要特定的适配器或扩展库。 12. 改善EF代码的方法 为了提高...
从文档提供的信息来看,EF支持多种数据库系统的访问,包括Oracle9i等,这表明EF具有良好的数据库兼容性和扩展性。通过学习EF,开发者能够掌握如何在.NET环境中高效地操作数据,同时减少了直接操作数据库的复杂性,...