以前一直用EF6和SQL来做项目 的开发,最近领导突然说要搞ORACLE的数据库,所以准备着手将搭建的三层开发框架往ORACLE上面迁,但在迁移过程中出现一系列的问题,现到园子里来请教前辈指教:
环境:win6 64 +ORACLE11g+EF6 +vs2013
问题如下:
一、由于不知道ORACLE的配置怎么配,所以想用实体模型连接数据库来看看生成的代码来参照写,但是在实体数据模型时找不到ORACLE的驱动?按照网上同学位的提示,在WEBCONFIG内进行配置后,还是不能连!
二、在ORALCE的官网上下载了Oracle.ManagedDataAccess.dll和Oracle.ManagedDataAccess.EntityFramework.dll,并引入到项目 的DAL层内,以前的SQL数据库的类是DBCONTEXT,ORACLE的是什么?
三、SQL和ORACLE的底层数据库的写法是否相同?最好哪些前辈能提供些源码参考
(我使用的是DBFIRST,不需要EF生成表)
现在按园子里面学说的,在WEB里面添加oralce的DLL后,在WEBCONFIG内也自动的加上了ORACLE的相关配置,所以只需要改一下连接数据库的语句即可;
但重新运行的时候报
:” ORA-01918: 用户 'dbo' 不存在"
按我的理解是不是EF为SQL生成数据库都加上dbo的owner,那么oracle里面的这个问题如何处理?
---------------------------------------------------------------------------------
由于上面报dbo不存,想到是否是schema的问题,在DBCONTEXT内加上modelBuilder.HasDefaultSchema("oraadmin");
后,提示报oraadmin不存在,当把oraadmin 改成 oraadmin.(多了个点)后,又报错为:ORA-00955: 名称已由现有对象使用
经过测试,当表或者对象在ORACLE内存在时,才会报出此错误
然后我到数据库将我要查询的表删除,重新执行,依然报这个错误。。。
现在被这个问题卡着
求大神指点.........
---------------------------------------------------------------------------
新问题:
经过调试发现,EF会每次自动的生成表到数据库内,但我在DBCONTEXT内加上了
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
在SQL里面加上这句后就不生成表了,难道ORACLE里面不同?
让EF不生成表,是否有其它的设置方法?
谢谢,我先看看
这个问题纠结了几天,终于看到答案了,试试
问题已经解决,总结如下:
一、EF自动生成的表是按MODEL的实体模型生成的,是区分大小写的
二、结合上面的说明 ;ORACLE是将建表和建字段时,自动的都调整为大写,所以在EF去操作表时找不到表的错误
解决办法:
将MODEL的类名和字段全部改为大写,运行正常
有效,谢谢。
求问,无法连接ORACLE。是什么原因!?楼主可分享一个简单的demo,提供参考!谢谢
连ORACLE的配置有点麻烦
1.去oralce管网上下载entityframework的dll
2.修改webconfig里面的配置,修改为oracle的配置
3.在dbcontent里面指向oracle的字符串连接
经过以上三步,基本上就可以连上oracle了