如何使用实体框架实现数据库独立性

2024-01-12

我已经使用实体框架启动了一个相当简单的示例项目。在该项目中,我从 SQL Server 2000 数据库创建了一个新的实体数据模型。我能够使用 LINQ to Entities 查询数据并在屏幕上显示值。

我有一个具有极其相似架构的 Oracle 数据库(我试图准确,但我不知道 Oracle 的所有细节)。我希望我的项目能够以最少的努力在 SQL Server 和 Oracle 数据存储上运行。我希望我可以简单地更改实体数据模型的配置字符串,实体框架会处理其余的事情。然而,它似乎不会像我想象的那样无缝工作。

有人做了我想做的事吗?再次,我尝试编写一个应用程序,可以使用实体框架以最少的努力从 SQL Server 或 Oracle 数据库查询(和更新)数据。第二个目标是在数据存储之间来回切换时不必重新编译应用程序。如果我必须“从数据库更新模型”,这可能没问题,因为我不必重新编译,但我不想走这条路。有谁知道可能需要采取哪些步骤?


“持久性无知”一词通常被理解为您的实体类没有被框架依赖项淹没(对于 N 层场景很重要)。现在情况并非如此,因为实体类必须实现某些 EF 接口(“IPOCO”),而不是普通的旧 CLR 对象。正如另一位发帖者提到的,有一个解决方案称为实体框架 V1 的持久性忽略 (POCO) 适配器 http://blogs.msdn.com/jkowalski/archive/2008/09/09/persistence-ignorance-poco-adapter-for-entity-framework-v1.aspx为此,EF V2 将开箱即用地支持 POCO。

但我认为您真正想要的是数据库独立性。通过包含存储模型、概念模型以及这两者之间的映射(在设计时将生成类型化的 ObjectContext)的大型配置 XML,我还发现很难想象如何透明地支持两个数据库。

看起来更有希望的是应用独立于数据库的 ADO.NET 提供程序,例如来自数据直接 http://www.datadirect.com。 DataDirect 还宣布 2008 年第 3 季度支持 EF。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用实体框架实现数据库独立性 的相关文章

随机推荐

  • mod_rewrite 的小问题

    我有一个分类广告网站 每个分类最初都是这样链接的 mydomain com ad php ad id Bmw M3 M tech 113620829 我应该使用什么 RewriteRule 来使此链接看起来像 mydomain com Bm
  • Node js 向 Gmail 发送会议/日历邀请

    我正在尝试使用 Node js 发送日历邀请 我已经尝试过 nodemailer 库 并且正在发送带有日历邀请的邮件 就像参考this https stackoverflow com questions 45097141 nodemaile
  • ASP.NET - Unity - 从外部配置文件读取配置部分

    我想将 Unity 集成到我的应用程序中 并且希望它使用外部配置文件 Unity初始化代码是 var fileMap new ExeConfigurationFileMap ExeConfigFilename unity config Sy
  • 将本地图像添加到 IJulia 笔记本

    如何将本地图像添加到 IJulia 笔记本 该图像与 IPYNB 文件位于同一本地网络文件夹中 该文件夹可通过符号链接访问 我尝试过相对文件名和绝对文件名 img src test png alt Image Test style widt
  • PHP 中变量周围的括号有什么作用?

    我在旧平台上使用 PHP 5 3 中的 ImageMagick 我偶然发现了一段代码 当变量周围使用括号时 该代码不起作用 但当删除这些括号时 该代码却起作用 变量两边的括号有什么作用 im new imagick im gt readIm
  • 在哪里可以找到 jdk 7 中的 jnlp api jar? [复制]

    这个问题在这里已经有答案了 可能的重复 在 JDK 1 7 中找不到 jnlp jar https stackoverflow com questions 10830317 cant find jnlp jar in jdk 1 7 对于j
  • 转换具有相同名称但不同扩展名的图像

    例如 我有两个文件 aaa jpg with cat aaa png with dog 正如您所看到的 尽管名称相同 但图像是不同的 我想将这些图像转换为一种格式 这项任务的基本尝试是 mogrify format jpg png 但由于显
  • 如何捕获flask_restful应用程序中引发的所有异常

    我确实有简单的 Restful 应用程序与 Flask Restful from flask import Flask from flask restful import Api app Flask name api Api app api
  • Ncurses:如何刷新菜单而不丢失当前位置?

    如何在不丢失当前位置的情况下重新加载菜单中的数据 例如 当用户 选择 某个项目时 执行的操作会更改数据 更新项目 删除项目或向菜单添加新项目 我想重新加载菜单 但仍将光标保留在刚刚选择的项目上 最好的方法是什么 作为参考 这个问题似乎非常接
  • 如何将用户表连接到角色表(使用表user_roles)?

    我需要创建一个用于用户身份验证的基本数据库 到目前为止 每个用户都有一个名称 密码和角色 我在互联网上的某个地方找到了这个 看起来很有希望 create table if not exists users id int unsigned n
  • 使用 Windows 服务运行 UI

    我计划使用 Windows 服务 用 C 编写 运行启动 监视 UI 应用程序 选中 允许服务与桌面交互 这在 Windows XP 上工作正常 但在 Windows 7 上弹出如下所示 当我点击查看消息时 整个屏幕一片空白 只显示 UI
  • 列出所有已部署的休息端点(spring-boot、jersey)

    是否可以使用 Spring Boot 列出我配置的所有休息端点 执行器在启动时列出所有现有路径 我想要类似的自定义服务 这样我就可以在启动时检查所有路径是否配置正确 并使用此信息进行客户端调用 我该怎么做呢 我用 Path GET我的服务
  • Azure DevOps 中是否有“服务帐户用户”概念

    我正在使用自动化工作Azure 开发运营并想知道是否有一种简单的方法可以服务用户帐户即信用永不过期并且可以访问的帐户Azure 开发运营只能通过API 我想在我的自动化脚本中重复使用此用户凭据 但不希望用户可以通过 UI 登录 Azure
  • 如何判断Control是否有Text属性

    当我迭代表单上的一堆不同控件时 而不是尝试访问 Text 属性 String text String Empty foreach Control control in this Controls try text control Text
  • 在 Expect.Call 中设置对象的属性

    很难解释我正在寻找的内容 但我的例子应该可以澄清它 我有下一个代码 var schedule ScheduleUtil CreateScheduleDto user user Expect Call gt scheduleRepositor
  • AWS InterruptedException:睡眠中断 com.amazonaws.http.IdleConnectionReaper

    我们有一个使用AWS Amazone api 的Web应用程序 在coreConfiguration类中我们使用predestroy方法创建一个awsApi bean coreConfiguration的代码是 Bean destroyMe
  • 使用时不变变量上的一些缺失数据 (NA) 从长重塑为宽

    使用时stats reshape 对于指定为时不变的任何变量 从基数将数据从长格式转换为宽格式 reshape仅获取第一个观察值 如果变量实际上以某种方式变化 则输出警告 就我而言 我缺少想要指定为时间不变的变量的数据 但由于我在其他时间点
  • 如何在SQL Server中统计每个老师的学生和班级?

    假设有 3 个这样的表 Teacher teacher id name Student student id teacher id Class class id teacher id 是否有 SQL 查询来获取为每位教师分配了多少学生和班级
  • 在重定向到登录页面之前,spring 将访问的 url 存储在哪个过滤器中?

    在Spring security 3 0 6 中 如果我们尝试访问一个页面 并且会话超时 我们将被带到登录页面 并且在成功验证后 我们将被重定向到我们之前尝试访问的页面我们被带到登录页面 在过滤器拦截器链中 这个 最后访问的 url 保存在
  • 如何使用实体框架实现数据库独立性

    我已经使用实体框架启动了一个相当简单的示例项目 在该项目中 我从 SQL Server 2000 数据库创建了一个新的实体数据模型 我能够使用 LINQ to Entities 查询数据并在屏幕上显示值 我有一个具有极其相似架构的 Orac