oracle数字类型ef映射,Entity Framework 学习中级篇5—使EF支持Oracle9i - ♂风车车.Net - 博客园...

从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类文件,如下代码所示:

namespaceEFOracleProvider

{

using System;

///

///This enum describes the current storage version

///

internal enum EFOracleVersion

{

Oracle9i = 9, //add by xray2005

///

///Oracle10g

///

Oracle10g = 10,

///

///Oracle 11g

///

Oracle11g = 11,

// higher versions go here

}

///

///This class is a simple utility class that determines the version from the

///connection

///

internal static class EFOracleVersionUtils

{

///

///Get the version from the connection.

///

/// current connection

/// version for the current connection

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的配置,如下所示:

description=".Net Framework Data Provider for Odbc"

type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0,

Culture=neutral, PublicKeyToken=b77a5c561934e089" />

description=".Net Framework Data Provider for OleDb"

type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0,

Culture=neutral, PublicKeyToken=b77a5c561934e089" />

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" />

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" />

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" />

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" />

第三步,保存即可.

接下来,简单的介绍一下,如何使用这个EFOralceProvider.

第1步:在命令行窗口,将目录定位到提示符, 系统盘符:\WINDOWS\Microsoft.NET\Framework\v3.5.如下所示(是我电脑上的目录):

11835246_1.GIF

第2步,输入相应的生成参数.如下图所示:

11835246_2.GIF

将“data source=test;user id=xray;password= 123”成你自己的对应的参数即可.

确定之后,就可以看到生成的结果了,同时会有写信息出来,如下示:

11835246_3.GIF

至此,EdmGen就为我们生成需要的文件.生成的文件如下所示:

lTestEFModel.csdl

lTestEFModel.msl

lTestEFModel.ssdl

lTestEFModel.ObjectLayer.cs

lTestEFModel.Views.cs

然后,通过EdmGen2工具, 使用刚刚生成的TestEFModel .csdl, TestEFModel .msl, TestEFModel .ssdl三个文件来生成一个模型.

命令如下:

Edmgen2.exe /toedmx TestEFModel.csdl TestEFModel.msl TestEFModel.ssdl

确定之后,该工具就会为我们生成一个TestEFModel.edmx文件了.

然后,把这个文件加入到我们的项目中,同时修改项目的App.Config文件连接字符串,如下所示:

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" />

最后保存.

至此,修改EFOracleProvider并使用,介绍完毕。

最后提供几个连接,以方便大家学习研究:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle 数据库之最:你见过最高的 SQL Version 是多少?

Oracle数据库中执行的SQL,很多时候会因为种种原因产生多个不同的执行版本,一个游标的版本过多很容易引起数据库的性能问题,甚至故障。 有时候一个SQL的版本数量可能多达数万个,以下是我之前在"云和恩墨大讲堂”分享过的一个案…

mybatis传参问题总结

一、 传入单个参数 当传入的是单个参数时&#xff0c;方法中的参数名和sql语句中参数名一致即可 List<User> getUser(int id);<select id"getUser" parameterType"java.lang.Integer" resultType"com.lee.test.pojo.User">select *…

C 怎么读取Cpp文件_opencv从yaml文件中读取矩阵(c++)

PS:由于我是新手&#xff0c;因此记录的比较罗里吧嗦&#xff0c;本文也属于一个没有任何技术的编程积累。在SLAM系统中&#xff0c;经常需要从配置文件中读取参数文件&#xff0c;读取整型&#xff0c;浮点型都是比较常见的操作&#xff0c;在读取矩阵卡了一下&#xff0c;记录…

oracle中的判断大小,sql语句判断大小

如何用sql语句查看某个数据库中的表的大小--读取库中的所有表名select name from sysobjects where xtypeu--读取指定表的所有列名select name from syscolumns where id(select max(id) from sysobjects where xtypeu and name表名)获取数据库表名和字段sqlserver中各个系统表…

超越Android:探索Kotlin的应用领域

by Adam Arold亚当阿罗德(Adam Arold) 超越Android&#xff1a;探索Kotlin的应用领域 (Going beyond Android: exploring Kotlin’s areas of application) If you have written something in Kotlin, chances are that you wrote it for Android. Kotlin, however, has other…

3.SFB标准版前端安装

SFB服务器准备部分&#xff1a;1.修改服务器名称&#xff0c;sfb加入域&#xff0c;用域管理员账户登录2.配置服务器IP地址&#xff0c;DNS3.安装Windows组件Add-WindowsFeature NET-Framework-Core, RSAT-ADDS, Windows-Identity-Foundation, Web-Server, Web-Static-Content,…

向spark standalone集群提交任务

文档链接 #切换到spark安装目录,执行下面一条命令,192.168.0.10是master的ip, examples/src/main/python/pi.py 是python 文件的路径 ./bin/spark-submit --master spark://192.168.0.106:7077 examples/src/main/python/pi.py任务已经执行完毕,耗时10秒 转载于:https://www.c…

SQLite学习手册

一、聚合函数&#xff1a; SQLite中支持的聚合函数在很多其他的关系型数据库中也同样支持&#xff0c;因此我们这里将只是给出每个聚集函数的简要说明&#xff0c;而不在给出更多的示例了。这里还需要进一步说明的是&#xff0c;对于所有聚合函数而言&#xff0c;distinct关键字…

oracle全局索引 效率,关于插入,全局索引和局部索引的情况,那种效率高

分区表上的索引表可以按range&#xff0c;hash&#xff0c;list分区&#xff0c;表分区后&#xff0c;其上的索引和普通表上的索引有所不同&#xff0c;oracle对于分区表上的索引分为2类&#xff0c;即局部索引和全局索引&#xff0c;下面分别对这2种索引的特点和局限性做个总结…

python excelwriter保存路径_Python和Excel 终于可以互通了!!

点击“开发者技术前线”&#xff0c;选择“星标&#x1f51d;”在看|星标|留言, 真爱作者&#xff1a;小天真_5eed 链接&#xff1a;https://www.jianshu.com/p/6ecf414f3372今天为大家分享一篇使用python将大量数据导出到Excel中的技巧心得&#xff0c;可以让Python和Excel…

nodejs 调用微服务器_无服务器NodeJS:构建下一个微服务的快速,廉价方法

nodejs 调用微服务器by Filipe Tavares由Filipe Tavares 无服务器NodeJS&#xff1a;构建下一个微服务的快速&#xff0c;廉价方法 (Serverless NodeJS: the fast, inexpensive way to build your next microservice) I love Node.js. I’ve re-discovered Javascript through…

(蓝桥杯)2018JAVA B组 日志分析

日志统计 小明维护着一个程序员论坛。现在他收集了一份"点赞"日志&#xff0c;日志共有N行。其中每一行的格式是&#xff1a; ts id 表示在ts时刻编号id的帖子收到一个"赞"。 现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长…

MySQL 导出数据

2019独角兽企业重金招聘Python工程师标准>>> 1、导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 存放位置比如&#xff1a; mysqldump -u root -p project > c:/a.sql 2.导出一个表的结构&#xff0c;并且带表中的数据 mysqldump -u 用户名 -p 数据库名 …

哎 心好累

雨天后的周六还要上班&#xff0c;避开了所有上班的交通方式&#xff0c;没有比这更需要车的时候&#xff0c;哎&#xff0c;感觉心好累 好好努力买车吧&#xff0c;觉得再这样只能是徒劳了。 困得和傻逼一样 单片机又要换型号&#xff0c;后面一堆事儿&#xff0c;哎 再见-dsp…

Abbey加入了FreeCodeCamp团队,担任编辑

by Quincy Larson昆西拉尔森(Quincy Larson) Abbey加入了FreeCodeCamp团队&#xff0c;担任编辑 (Abbey is joining the freeCodeCamp team as an editor) Every article you’ve read here on the freeCodeCamp community Medium publication has been edited with care by a…

单片机STM8S测量电压电路_单片机电路设计中的10个难点

单片机是嵌入式系统的核心元件&#xff0c;使用单片机的电路要复杂得多&#xff0c;但在更改和添加新功能时&#xff0c;带有单片机的电路更加容易实现&#xff0c;这也正是电器设备使用单片机的原因。那么在单片机电路的设计中需要注意的难点有哪些&#xff1f;嵌入式ARM开发 …

oracle ebs 数据源,Oracle EBS环境下查找数据源(Form篇)

关于在Oracle EBS环境下如何查找数据源的文章几年前就已经开始整理&#xff0c;但是其中关于OAF方面的一直没有整理&#xff0c;导致这份文档一直残缺不全&#xff0c;有很多次同事都向我索要相关文档都未能如愿以偿&#xff0c;新的一届培训工作再次启动&#xff0c;为了自己也…

net-speeder

有的同学反映自己的***速度慢&#xff0c;丢包率高。这其实和你的网络服务提供商有关。据我所知一部分上海电信的同学就有这种问题。那么碰到了坑爹的网络服务商&#xff0c;我们应该怎么办呢&#xff1f; duangduang~~~~~~有请今天的主角&#xff1a;Net-Speeder登场&#xff…

linux 实用指令

通过init 来制定/切换不同的运行指令 查看linux 系统下&#xff0c;电脑的运行级别 vim /etc/inittab 如何找回丢失的root密码&#xff1f; 进入到单用户模式&#xff0c;然后修改root密码 进入到单用户模式&#xff0c;root不需要密码也可以登录 如果开机就是init 0 办法&…

Atitit.异步的实现模式attilax大总结

Atitit.异步的实现模式attilax大总结 1.1. 函数回调(包括的future模式)1 1.2. 事件机制( 包括定时器 listeners 1 1.3. 中断机制1 1.4. 订阅机制 发布/订阅 又称"观察者模式"&#xff08;observer pattern&#xff09;。1 1.5. Promises对象1 1.6. 轮询1 2. 实现级别…