Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';s在EF中添加迁移中StartupProjectName参数的用途_C#_Entity Framework_Entity Framework Migrations - Fatal编程技术网

C# 什么';s在EF中添加迁移中StartupProjectName参数的用途

C# 什么';s在EF中添加迁移中StartupProjectName参数的用途,c#,entity-framework,entity-framework-migrations,C#,Entity Framework,Entity Framework Migrations,正如我所理解的,Add Migration正在做什么,它只是将当前的代码模型与上次应用的迁移模型进行比较(在resx文件中有整个模型) 对于StartupProjectName参数的描述,它表示: -StartUpProjectName 指定用于命名连接字符串的配置文件。 如果省略,则使用指定项目的配置文件 如果每个迁移都有整个模型的快照,那么就不需要数据库,因为当前模型和该快照是完全可比较的 那么,为什么在添加迁移命令中提供此参数来指定连接字符串?添加迁移不需要“-StartUpProject

正如我所理解的,
Add Migration
正在做什么,它只是将当前的代码模型与上次应用的迁移模型进行比较(在resx文件中有整个模型)

对于StartupProjectName参数的描述,它表示:

-StartUpProjectName

指定用于命名连接字符串的配置文件。 如果省略,则使用指定项目的配置文件

如果每个迁移都有整个模型的快照,那么就不需要数据库,因为当前模型和该快照是完全可比较的


那么,为什么在添加迁移命令中提供此参数来指定连接字符串?

添加迁移不需要“-StartUpProjectName”,因为您可以从package manager控制台上方的下拉列表中选择“默认项目”。
您可以使用参数“-StartUpProjectName”

覆盖下拉列表中的“默认项目”值。您可以使用该参数指定包含连接字符串的项目(例如在app.config中)


您可以在单独的项目中进行迁移(该项目不包含连接字符串)。

我的问题是为什么添加迁移需要连接字符串。据我所知,它在工作的任何阶段都不需要数据库。它确实需要连接,迁移历史记录是通过_MigrationHistory表检索的。该表存储有关迁移的信息。但是添加迁移不会更新数据库。那么它为什么需要数据库呢。它所要做的就是找出当前模型与上次快照之间的差异。它从何处获取快照?在以下链接中,它表示每个迁移在其resx文件中都有一个完整的快照: