两个不同类型的数据库如何切换自如?

背背山上的小和尚 2018-05-23 03:40:25
现在有两个不同的数据库,oracle 和mssql,里面的东西大致都是一样的,字段都没有出入,但是代码里面有时候就要写两段代码,因为有时候sql语句可能会有出入,有没有什么办法可以避免这种问题呢?目前我在看EF方向的代码
...全文
1289 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
游北亮 2018-05-24
  • 打赏
  • 举报
回复
嗯,ORM框架,要支持Linq那种写法的,不用写原生SQL的,但是注定性能会差, 像Dapper这种不支持Linq的ORM框架,你就不能用了
圣殿骑士18 2018-05-24
  • 打赏
  • 举报
回复
引用 6 楼 daixf_csdn 的回复:
用EF可以,能弥合大多数差异。然后写一个简单的以委托为参数的静态方法,各自写代码就行。

//封装的方法
public static void ExecuteFor(string dbType, Fun oracle, Fun mysql)
{
      ...
}

//具体调用
public void test()
{
     string dbType = 'mysql';
     ExecuteFor(dbType,
     ()=> {
              //mysql的EF代码
          },
     ()=>{
            //oralce的EF代码
            }) 
}
补充,ExecuteFor方法,是针对实在无法弥合,需要分别写代码的情况。
圣殿骑士18 2018-05-24
  • 打赏
  • 举报
回复
用EF可以,能弥合大多数差异。然后写一个简单的以委托为参数的静态方法,各自写代码就行。

//封装的方法
public static void ExecuteFor(string dbType, Fun oracle, Fun mysql)
{
      ...
}

//具体调用
public void test()
{
     string dbType = 'mysql';
     ExecuteFor(dbType,
     ()=> {
              //mysql的EF代码
          },
     ()=>{
            //oralce的EF代码
            }) 
}
CalvinR 2018-05-24
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
用EF这种高级封装的才行,但如果你一定要写sql的话,什么orm都没用
NHibernate不可以吗 ?回头试试看行不行
  • 打赏
  • 举报
回复
那个,用odbc驱动orm是不是可行呢,楼上的大佬们。
大鱼> 2018-05-24
  • 打赏
  • 举报
回复
EF是可以,但是这种封装必定是需要性能为代价的
  • 打赏
  • 举报
回复
用EF这种高级封装的才行,但如果你一定要写sql的话,什么orm都没用

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧