最佳实践 - 在 EntityFramework 中混合表实体与视图实体?

2024-01-14

我有一个遗留数据库,我想与实体框架进行交互。

该数据库经过高度规范化,用于存储有关航班的信息。为了更容易地处理某些数据,编写了许多 SQL 视图来扁平化数据并将某些多表连接转换为更多逻辑信息。

快速查看后,我发现在 EF 中使用视图有两个问题。

  1. 视图包含很多很多键。一些快速谷歌搜索似乎表明我需要手动编辑 EDMX 文件才能删除此信息。

  2. 视图与其他表实体没有任何关系。需要手动添加这些关联才能链接视图 -> 表。

当 DBA 团队进行更改时,从数据库刷新模型时,这两个似乎都是主要痛点。

这是否只是您在使用 EF 时需要“忍受”的事情,或者是否有任何建议的模式/实践来处理这些问题。


将表实体与视图实体混合在一起是可以的,这很大程度上取决于您的要求。

我的经验是这些是你必须处理的事情。

当我第一次开始使用实体时,我经常使用视图,因为我被告知我需要使用它们。随着我对 Entity 越来越熟悉,我开始prefer使用表实体而不是视图实体;主要是因为我觉得我有更多的控制权。当您呈现只读信息或如您所描述的那样(展平数据、枢轴、连接等)时,视图是可以的;但是,当您的需求发生变化并且现在必须添加 CRUD 时,您将不得不使用存储过程或更改模型以使用表实体,因此您最好从一开始就使用表实体。

视图包含很多很多键。一些快速谷歌搜索似乎 表示我需要手动编辑 EDMX 文件才能删除此文件 信息。

这对我来说从来都不是真正的问题。您可以在设计器中撤消视图实体的键。如果您谈论的是对存储层中的视图执行此操作,那么是的,您可以使其工作,但是一旦您从数据库更新模型,您将不得不再次执行此操作 - 我不建议这样做。您最好与 DBA 一起调整数据库中的关键约束。

视图与其他表实体没有任何关系。 需要手动添加这些关联才能链接视图 -> 表。

这是often对我来说是个问题。有时您可以毫无问题地添加键并创建关系,但通常您可能必须更改数据库中的键和/或关系才能使其正常工作 - 这取决于您的要求;即使使用表实体,您也可能必须处理这个问题。

希望这可以帮助。

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

最佳实践 - 在 EntityFramework 中混合表实体与视图实体? 的相关文章

随机推荐

  • 排序在 jQuery 数据表中不起作用

    我在一页中有两个内联表 排序适用于一个数据表 但不适用于其他数据表 一次调用两个 div 但排序仅适用于一个数据表 div1 DataTable processing true destroy true paginate true leng
  • 使用 jQuery 和 asp.net 转发器自动完成填充 ID

    我有一个带有自动完成功能的 asp Textbox 数据来自网络服务并返回 Json 数据 当选择一个项目时 它会将一个值 id 放入 隐藏 字段中 并将价格放入另一个文本框中 这一切都很好 但是当我将或多或少相同的代码放入 asp rep
  • 需要在 Python Pandas 中过滤几列并更改其中一列的值

    我有一个包含 150 000 行和 15 列的表 此示例的重要列是 COUNTRY COSTCENTER 和 EXTENSION 我正在将 CSV 读入 Pandas Dataframe 所有列都是对象类型 我想做的是 搜索某个国家 地区
  • Maven 的综合站点/部署目标

    在 CI 服务器上运行 Maven 构建时 我生成站点来发布文档和报告 并将工件部署到快照存储库以供其他项目使用 为此 我设定了以下目标 mvn clean site deploy 这意味着单元测试已运行twice 一次用于站点生命周期 一
  • 将 JsonSerializerSettings 从 JsonSerializer 复制到新的 JsonSerializer

    有什么办法可以去掉设置JsonSerializer类并在新的中重新实现它们JsonSerializer 似乎没有任何方法可以做类似的事情 我发现最好的是通过反射调用的私有方法 ApplySerializerSettings 我正在尝试从Wr
  • Spring 表达式 (SpEL) - 舍入

    使用 SpEL 评估数学运算时是否有办法指定舍入精度 例如 ExpressionParser parser new SpelExpressionParser Expression exp parser parseExpression 2 3
  • Underscore.js - 获取唯一的属性值

    我最近才发现 underscore js 的强大功能 对方法仍然很陌生 我恳请建议 我如何从中得到 name Type 2 id 14 name Type 1 id 13 name Type 3 id 15 name Type 2 id 1
  • 有没有办法在 Javascript 中拥有/锁定 Enum 对象的唯一索引值? [复制]

    这个问题在这里已经有答案了 正在阅读 推荐方式 https stackoverflow com questions 287903 enums in javascript处理的枚举类型 https en wikipedia org wiki
  • Xcode 5.0.1 iOS 7.0.3 模拟器未启动

    我刚刚在 OSX Mavericks 上升级到 Xcode 5 0 1 并将 Xcode 升级到 5 0 1 当我尝试在 iOS 7 0 3 模拟器上启动应用程序时 模拟器无法启动 该应用程序将在 iOS 6 1 模拟器上启动 但 iOS
  • 嵌入式 C 中模运算符的替代方案? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 嵌入式 c 中是否有 运算符的替代方案 还有其他一些方法可以做到这一点 例如在 C 中使用 while 循环 但模运算符真的会降低微控
  • Symfony2:如何翻译表单类型中的自定义错误消息?

    我需要翻译我的表单类型中的错误消息 这是我的表单类型代码 class ReferFriendType extends AbstractType public function buildForm FormBuilder builder ar
  • 实体框架性能问题

    我在实体框架方面遇到了一个有趣的性能问题 我正在使用代码优先 这是我的实体的结构 一本书可以有很多评论 评论与一本书相关联 一篇评论可以有一个或多个评论 一条评论与一条评论相关联 public class Book public int B
  • 如何使用存储过程实现Gridview自定义分页?

    有人可以将我重定向到您自己的博客链接或任何其他链接 解释有关如何使用存储过程实现 gridview 自定义分页的完整教程吗 我在 google 中的搜索给了我 2006 年的旧文章 现在我正在使用 asp net 3 5 和 c aspx
  • Homestead Laravel 继续运行之前的版本

    我已按照以下步骤操作https laravel com docs 8 x homestead updating homestead https laravel com docs 8 x homestead updating homestea
  • 我的应用程序中的 Google 地图不可见

    当我启动我的应用程序时 出现以下错误 V GoogleSignatureVerifier 4962 com myapp application signature not valid Found V GoogleSignatureVerif
  • 创建 Maven 项目,无法解析原型,连接被拒绝

    我怀疑我有 Maven 代理问题 当我创建一个新项目时 1 文件 gt 新建 gt Maven项目 2 我选择原型 在 org apache maven archetypes 中 gt maven 原型 webapp 3 我得到这个错误 无
  • 从其他进程获取模块句柄

    有没有办法使用 C 从另一个进程获取我知道其名称的模块的句柄 GetModuleHandle and GetModuleHandleEx仅从同一进程获取句柄就很好 您可以使用读取进程内存 http msdn microsoft com en
  • 域名可以有两个连续的连字符吗

    我在 SO 上查找了几个问题 这似乎表明不允许使用两个连续的连字符 例如 my website com 但是当我在http www register com index rcmx http www register com index rc
  • Flask-sqlalchemy - PostgreSQL - 为表定义特定模式?

    我想使用flask sqlalchemy 为 模型 定义特定模式 当您在 sqlalchemy 本身中创建表对象时 它有一个用于传递模式名称的参数 我如何在flask sqlalchemy中做到这一点 当您定义模型类时 请使用 table
  • 最佳实践 - 在 EntityFramework 中混合表实体与视图实体?

    我有一个遗留数据库 我想与实体框架进行交互 该数据库经过高度规范化 用于存储有关航班的信息 为了更容易地处理某些数据 编写了许多 SQL 视图来扁平化数据并将某些多表连接转换为更多逻辑信息 快速查看后 我发现在 EF 中使用视图有两个问题