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文件中都有一个完整的快照: