使用EF6代码优先迁移,我能够成功保存模型并为它们创建新的迁移。但是,我的DbContext类位于Sharp.Data
项目中,实际(Sql CE)数据库位于Sharp.Server
项目bin文件夹下,我的模型位于Sharp.Common
项目中。
当我运行add-migration -ProjectName Sharp.Data Migration3
(指向Sharp.Data
,因为它是DbContext所在的位置)时,它成功运行并识别对Sharp.Common
项目中的模型所做的更改。但是,当我运行update-database -ProjectName Sharp.Data
时,它会更新/创建/迁移/播种位于我的Sharp.Data
项目的bin文件夹下的新数据库,而不是Sharp.Server
,最终应用程序会读取数据来自。
有办法做到这一点吗?要使迁移生成/更新存在于其自身项目文件之外的其他位置的数据库吗?这可能是使用SQL CE的遗留物,但由于各种原因,它是我选择的数据库。
答案 0 :(得分:1)
您可以将额外参数传递给update-database
,允许:
Update-Database
的完整语法:
Update-Database [-SourceMigration <String>] [-TargetMigration <String>]
[-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>]
[-ConfigurationTypeName <String>] [-ConnectionStringName <String>]
[<CommonParameters>]
Update-Database [-SourceMigration <String>] [-TargetMigration <String>]
[-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>]
[-ConfigurationTypeName <String>] -ConnectionString <String>
-ConnectionProviderName <String> [<CommonParameters>]
指定连接字符串(指向项目中的正确文件夹):
-StartUpProjectName
和-ConnectionStringName
,用于指定包含带有提供名称的连接字符串的.config文件的项目(第一语法)-ConnectionString
,直接指定连接字符串(第二语法)创建可以使用其他工具直接应用于数据库的SQL脚本:
-SourceMigration
:目标数据库-TargetMigration
中的当前迁移:迁移到更新,以及-Script
:生成可以手动申请的脚本答案 1 :(得分:0)
@ JotaBe的回答是正确的。但总而言之,您需要执行以下操作:
add-migration "MigrationName" -ProjectName Sharp.Data -ConnectionString "ConnectionStringToYourTargetDatabaseHere"