首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架的幕后迁移

实体框架的幕后迁移
EN

Stack Overflow用户
提问于 2015-10-28 01:07:06
回答 1查看 971关注 0票数 4

我使用实体框架迁移已经有一段时间了,我开始想知道它们实际上是如何在幕后工作的。我的意思是:

EF如何理解应用程序中的模型和数据库方案中的模型是不同的?据我所知,在存储所有迁移的数据库和应用程序的migrations文件夹中都有一个表__MigrationHistory (仅适用于基于代码的迁移)。在__MigrationHistory表中,有一个名为model的列,其中包含一些散列。这个哈希值到底是什么?它是模型的快照吗?是EF需要应用的更改才能从上一次迁移到这次迁移吗?

如果是模型快照,这意味着EF必须在每次我们决定更新数据库时找出如何将当前模型转换为快照。

然而,如果是更改,这将意味着EF必须将这些更改应用于当前模型,以便了解数据库模型和应用程序模型何时不同。

问题是,我在哪里可以了解到迁移是如何实现的,以及数据库中的这个模型列是什么。我将感谢任何建议或链接。

更新:

我已经检查了提供的资源,正如我发现的那样,model列实际上是模型的快照。这意味着,当我运行update-database命令时,EF转到数据库,通过解码XML字符串来检查最新的迁移模型,如果应用程序中的当前模型与从数据库获得的模型EF不同,EF将生成一个脚本来更新数据库。但是,当有多个迁移挂起时,我仍然不知道EF会做什么。

我将根据https://channel9.msdn.com/Blogs/EF/Migrations-Under-the-Hood中的示例进行示例描述。比方说,我们在数据库中有第一次迁移,然后是第二次迁移,添加了Url列,第三次迁移删除了这一列。如果我将这些更改应用于包含类似于First的模式的数据库,EF会根据第二和第三个模式添加列,然后删除它,还是会尝试计算更新数据库所需的常规更改,然后执行生成的脚本(在本例中,它不会做任何事情?

此外,如果有人对https://msdn.microsoft.com/en-us/data/dn481501.aspx感兴趣,我还发现了另一个链接

EN

回答 1

Stack Overflow用户

发布于 2015-10-28 01:46:42

Channel 9 video涵盖了一般概念。此blog post可能更具体地针对您的问题。特别是,作者总结了model列的使用(搅拌器:它是一个可以解压缩和检查的压缩XML字符串,有这样做的代码)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33374238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档