如何使用数据库更改更新 edmx 文件?

2024-02-29

我有一个 edmx 文件,并且更改了数据库中的一个表。我知道有一个“从数据库更新模型”向导,但在许多情况下这是无用的。

例如,如果我将字段从非空更改为可为空,或者如果我删除字段,则更新模型不会反映更改。我必须删除实体并将其添加回来才能使更改出现在我的模型中。

根据以下问题:如何将数据库更改传播到我的 .edmx 文件? https://stackoverflow.com/questions/5432830/how-do-i-propagate-database-changes-to-my-edmx-file

其中一个答案似乎说了同样的事情,您需要删除实体并将其添加回来。

这是最终的答案还是有更好的方法来做到这一点?


更新 EDMXsafe way:

正如您所发现的,数据库更新并不总是正确更改现有属性。

根据我们对 EDMX 更新的日常使用(24 个月内进行了 100 次更新),我建议按照以下顺序更新 EDMX。

删除现有模型然后更新:

  1. 打开 EDMX 设计器
  2. Ctrl-A 选择全部
  3. 删除键删除设计器中的所有模型
  4. 重要提示:如果您使用 TFS 进行源代码控制,此时请勿保存 EDMX!*
  5. 现在右键单击并选择“从数据库更新模型”以再次重新创建整个模型。
  6. 重建项目以传播更改

这显然会丢失您对模型所做的任何手动调整,但如果可能,应避免手动调整。这使得整个过程可以随时重现(这是一件好事)。

重要笔记:

  • 如果您在 Visual Studio 中打开了自动保存功能,则需要快速选择更新(上面的步骤 5),以避免自动保存所有内容。
  • 如果您使用 TFS 进行源代码控制,并且碰巧在清空 EDMX 后保存了它,TFS 会将所有生成的文件标记为“已删除”,并且再次更新 EDMX 可能会导致文件断开连接不在源代码管理中!.
  • 此过程不会更新任何存储过程。此外,我发现刷新 EDMX 也不会更新仅返回类型已更改的存储过程(截至 EF 6.1.1 仍然是最新的)。

附加建议:

将您的 EDMX 保存在单独的库中。这也成为添加额外 TT 文件和部分类(例如扩展 EDMX 模型的功能)的好地方。我还将数据库上下文的任何扩展方法放置在这个库中。这migration文件也会在库中生成,从而很好地包含所有内容。

2015 年 4 月更新

Visual Studio 2013 的最新版本 4 似乎已经解决了许多 TFS 问题。现在,我们看到 Visual Studio 检出生成的文件,如果它们未更改,则将其恢复。上述步骤似乎仍然是最安全的方法。

2015 年 9 月更新

使用最新的 VS2013 Release 5,如果在 EDMX 更新期间发生保存,我们仍然会遇到问题。您仍然可能会处于待定删除导致您的状态tt文件成为从源代码管理中删除更新期间。秘诀是在第 4 步和第 5 步之间快速更新! :)

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

如何使用数据库更改更新 edmx 文件? 的相关文章

  • MVC3 和实体框架

    我的问题很简单 将 edmxMVC3 项目的 Web 应用程序的模型文件夹中的文件吗 我的答案非常简单 不要用数据访问逻辑和数据建模搞乱表示层 整个 MVC 应用程序 Visual Studio 解决方案中从下到上至少有 4 个项目 1 P
  • 使用 IQueryable 进行单元测试代码

    我被要求为某些功能编写一些单元测试 但坦率地说 我不太确定这样做的必要性或有用性对于这个特殊的一段代码 我绝不试图质疑单元测试的必要性或有用性 所讨论的代码非常简单并且被大量使用 基本上它是 Skip 和 Take 扩展方法的包装 在我看来
  • Code First - 实体框架 - 如何公开外键

    我有以下数据对象 public class Customer System Data Entity ModelConfiguration EntityTypeConfiguration
  • 是否可以存根实体框架上下文和类来测试数据访问层?

    我熟悉用于测试 ASP NET MVC 应用程序中的控制器和业务逻辑的技术 我们的应用程序中的数据访问集中在松散耦合的特殊服务中 使用接口并通过实体框架与实际数据库一起使用 然而 随着 DAL 变得越来越复杂 隐藏数据库实现细节并为应用程序
  • 实体框架、dll、excel

    我用C 编写了Excel使用的dll 该dll是COM注册的 我与 Excel 的连接没有问题 该 dll 使用实体框架 5 从 SQL Server 数据库检索数据 如果我通过控制台应用程序运行该 dll 则该 dll 工作正常 但是当我
  • EF数据库首先如何针对数据库更改更新模型?

    在班级图书馆Ado net Entity Data Model已生成 POCO 类 这些是第一次生成的 但数据库更改并未得到反映 在edmx图表右键单击并选择Update Model from Database显示新创建的表 但即使选择添加
  • 如果我以后要应用ado实体框架,推荐的数据访问层设计模式是什么?

    我正在创建一个网站并使用 Linq to SQl 作为数据访问层 并且我愿意使该网站可以在 linq to sql 和 ado 实体框架上工作 而无需更改其他层中的许多内容 业务逻辑层或 UI层 实现这一目标的推荐模式是什么 你能简单解释一
  • 将 ASP.NET Identity 实施到现有数据库中

    我有一个现有的项目和 SQL 数据库 其中包含一个用户表 我们称之为 MyOldUsersTable 和带有 PK FK 关系的附加表 地址 电话 职位等 注意 该数据库不使用成员身份或身份 它是从另一个项目中提取的数据库 MyOldUse
  • C# 中 LINQ 中的按多列分组

    我有一个类如下 public class ActualClass public string BookName get set public string IssuerName get set public DateTime DateOfI
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 选择里面的 Include in EF Core

    我有一个如下所示的实体 为简洁起见 部分删除 它包括许多其他属性 public class Tender Key DatabaseGenerated DatabaseGeneratedOption Identity public int I
  • 与 Entity Framework Core 2.0 的一对零关系

    我正在使用 C 和 NET Framework 4 7 将 Entity Framework 6 1 3 Code First 库迁移到 Entity Framework Core 我一直在用 Google 搜索 Entity Framew
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 将 F# 类型保存到数据库

    A lot http gorodinski com blog 2013 02 17 domain driven design with fsharp and eventstore f 文章数推荐 http fsharpforfunandpr
  • Entity Framework 6(代码优先)实体版本控制和审计

    我正在考虑将 Entity Framework 6 1 1 与 SQL Server 2008 R2 一起使用 目前 我正在使用代码优先的 EF 功能创建模型和数据库 我的基本用例是创建一个特定实体的所有更改的日志 ID是关键栏 以帮助审核
  • 运行更新数据库时出错

    我在运行时遇到以下错误Update Database Verbose 使用启动项目 WebApplication 使用 NuGet 项目 Web应用程序 指定 Verbose 标志来查看 SQL 应用于目标数据库的语句 目标数据库是 星冰乐
  • 处理与不同相关实体的一对多的正确模式

    我有一个 C 项目 我使用实体框架作为 ORM 我有一个User 可以向多家银行付款 每家银行都是一个独立的实体 并且每家银行都由不同的字段描述 问题是 一User可以没有或有很多不同的Banks 我不太确定如何对此进行建模 临时解决方案是
  • 为什么 EF Core 使用此存储过程总是返回 -1?

    我正在尝试对本地 2016 DB 使用 EF Core 最新版本 并且我得到 1每次都回来 我不知道我做错了什么 我知道它正在到达数据库 我查了一下 int returnCode dbContext Database ExecuteSqlC
  • 我可以将 MongoDB 与实体框架一起使用吗?

    实体框架有可能支持MongoDB数据库吗 有人写过实体框架MongoDB Provider吗 简短的回答 不 这肯定是可能的 但不合理 MongoDB 是文档数据库 不支持集合之间的任何物理关系 EF 非常适合 SQL MySQL 等关系数

随机推荐

  • 如何在java中打开受密码保护的docx文件?

    我想使用 Apache POI 打开受密码保护的 docx 文件 谁能帮我完整的代码吗 我无法使用此代码得到解决方案 线程 main org apache poi poifs filesystem OfficeXmlFileExceptio
  • 深度克隆(复制)可变 Scala 对象的最简单方法是什么?

    深度克隆 复制 可变 Scala 对象的最简单方法是什么 由于您想要以最简单的方式深度复制 Scala 对象 而不是最快的方式 因此您始终可以序列化该对象 前提是它是可序列化的 然后将其反序列化回来 以下代码仅在编译时运行 而不是在 REP
  • 使用 OAuth 2.0 对用户进行身份验证时,重定向 URL 如何知道他们属于哪个用户?

    我是 Web 开发新手 并试图通过构建使用 Google API 的 Web 应用程序来入门 我正在阅读 Google 关于使用 OAuth 2 0 的文档 但重定向 URL 位让我有点困惑 根据例子here https developer
  • 如何防止 Kendo MultiSelect 在网格模板中编辑后丢失值?

    我有一个显示以逗号分隔的值列表的网格 并且它有一个在网格的模板编辑器中使用的数组 在服务器上 我将逗号分隔的列表转换为 Kendo 多选 AngularJS 指令的数组 我几乎已经完成了所有工作 在多选中显示 编辑和添加值 只是发生了一件奇
  • 如何在 dot net core 中获取另一个时区的本地时间

    我正在解决一个问题 我需要获取另一个时区的当前日期和时间 我不知道我的代码将在哪个时区运行 并且它需要在 Windows 和 Linux 机器上运行 我还没有找到任何方法可以做到这一点 有任何想法吗 P S 我特别需要找到瑞典的时间 包括代
  • 如何用CSS显示和隐藏div?

    在我的脚本中有三个 div 我想显示 divclass ab 当我将鼠标悬停在第一行并显示 div 时class abc 当鼠标悬停在第二行时 否则我想显示 divclass a 默认情况下 但它从不显示 divclass a abc ab
  • 如何检查是否已在 元素中选择文件?

    我有多个复选框和一个文件上传输入 如果选中一个或多个复选框并且输入值不为空 我想重新启用按钮 这是一个链接bootply http www bootply com 6YZf8l4QVa 这是我的html div class upload b
  • Django 将 URL 重定向到最新创建的博客文章

    我希望在 urls py 中进行重定向 以便当人们访问博客应用程序索引域时自动加载我的博客应用程序中的最新帖子条目 Blog Post 详细信息通过 blog views post detail request slug 方法提供 博客文章
  • 如何在 Angular 5 中获取上一页 URL

    我正在使用 Angular 5 应用程序 我需要知道如何获取最后一个 URL 将其作为后退按钮的链接 我找到了这个location back 但我需要最后一个 url 作为字符串 我怎样才能得到生成的字符串location back 非常感
  • RStudio 更改 pandoc .latex 模板

    我想使用不同的 Latex 模板来渲染 R markdown 版本 2 我发现了以下建议 a 模板位置 system file rmd latex default tex package rmarkdown b YAML Front Mat
  • Collectstatic 创建空文件

    我正在尝试将应用程序升级到 Django 1 11 但遇到了问题collectstatic 旧版本 django 1 8 17 django storages 1 5 1 新版本 django 1 11 12 django storages
  • C 中指针比较如何工作?可以比较不指向同一数组的指针吗?

    在 K R C 编程语言第二版 第 5 章中 我读到了以下内容 首先 在某些情况下可以比较指针 如果p and q指向同一个数组的成员 那么关系如下 lt gt 等工作正常 这似乎意味着只能比较指向同一数组的指针 但是当我尝试这段代码时 c
  • 解析 LocalDate 但得到 DateTimeParseException; dd-MMM-uuuu

    我正在尝试转换String to LocalDate using DateTimeFormatter 但我收到一个异常 java time format DateTimeParseException Text 2021 10 31 无法在索
  • 如何在 65536 行后添加 SSRS 分页符,计算组页眉/页脚

    我有一个 SSRS 报告 当行数大于 Excel 2003 限制 65536 时 该报告无法导出到 Excel 该报告已经具有带有组页脚的分组级别 我尝试在表达式上添加一个带有分页符的额外分组级别 ceiling rownumber not
  • 线太长。姜戈 PEP8

    PEP8信息 models py 10 80 E501 line too long 83 gt 79 characters 模型 py field TreeForeignKey self null True blank True relat
  • 展开/折叠 ttk Treeview 分支

    我想知道 ttk Treeview 中折叠和展开分支的命令 这是一个简约的示例代码 coding utf 8 import tkinter as tk from tkinter import ttk root tk Tk tree ttk
  • 沿直线或路径移动 SVG 对象

    我想要为 SVG 对象设置动画 以便它遵循我从 d3 js 中的线条生成器构建的 SVG 路径 有什么简单的方法可以实现这一目标吗 特别是 我想获得与我的路径相对应的插值坐标 从那里 使用 tween js 或 d3 js 本身执行动画将很
  • 防止嵌套对象的 mongodb C# 驱动程序将 id 序列化为 _id

    我正在使用 C mongodb 驱动程序来更新 mongodb 中的记录 下面的代码对我来说工作正常 但它会自动将所有出现的 id 转换为 id var client GetMongoClient var collection1 GetMo
  • 使用 C# 压缩/解压字符串

    我是 net新手 我正在用 C 进行字符串压缩和解压 有一个 XML 我正在转换为字符串 然后进行压缩和解压缩 我的代码中没有编译错误 除非我解压代码并返回字符串时 它只返回 XML 的一半 下面是我的代码 有错误的地方请指正 Code c
  • 如何使用数据库更改更新 edmx 文件?

    我有一个 edmx 文件 并且更改了数据库中的一个表 我知道有一个 从数据库更新模型 向导 但在许多情况下这是无用的 例如 如果我将字段从非空更改为可为空 或者如果我删除字段 则更新模型不会反映更改 我必须删除实体并将其添加回来才能使更改出