Ef code first EntityFramework6(EF6)在单独的项目中使用模型进行代码优先迁移
使用EF6 code first迁移,我能够成功地保存模型并为它们创建新的迁移。但是,我的DbContext类位于Ef code first EntityFramework6(EF6)在单独的项目中使用模型进行代码优先迁移,ef-code-first,sql-server-ce,entity-framework-migrations,entity-framework-6.1,Ef Code First,Sql Server Ce,Entity Framework Migrations,Entity Framework 6.1,使用EF6 code first迁移,我能够成功地保存模型并为它们创建新的迁移。但是,我的DbContext类位于Sharp.Data项目中,实际(Sql CE)数据库位于Sharp.Serverproject bin文件夹下,我的模型位于Sharp.Common项目中 当我运行add migration-ProjectName Sharp.Data Migration3(指向DbContext所在的Sharp.Data)时,它会成功运行并识别对Sharp.Common项目中的模型所做的更改。但
Sharp.Data
项目中,实际(Sql CE)数据库位于Sharp.Server
project bin文件夹下,我的模型位于Sharp.Common
项目中
当我运行add migration-ProjectName Sharp.Data Migration3
(指向DbContext所在的Sharp.Data
)时,它会成功运行并识别对Sharp.Common
项目中的模型所做的更改。但是,当我运行updatedatabase-ProjectName Sharp.Data
时,它会更新/创建/迁移/种子位于我的Sharp.Data
项目的bin文件夹下的新数据库,而不是Sharp.Server
,应用程序最终从中读取数据
有办法做到这一点吗?要让迁移生成/更新除其自身项目文件之外的其他地方存在的数据库?这可能是使用SQL CE的遗留问题,但出于各种原因,它是我选择的数据库。您可以向
更新数据库
传递额外参数,以允许:
- 指定不同的连接字符串
- 生成可以应用于目标数据库的SQL脚本
更新数据库的完整语法:
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>]
更新数据库[-SourceMigration][-TargetMigration]
[-Script][-Force][-ProjectName][-StartUpProjectName]
[-ConfigurationTypeName][-ConnectionStringName]
[]
更新数据库[-SourceMigration][-TargetMigration]
[-Script][-Force][-ProjectName][-StartUpProjectName]
[-ConfigurationTypeName]-连接字符串
-ConnectionProviderName[]
要指定连接字符串(指向项目中的正确文件夹),请执行以下操作:
-StartUpProjectName
和-ConnectionStringName
,以指定包含.config文件的项目,该文件的连接字符串具有提供的名称(第一种语法)
-ConnectionString
,直接指定连接字符串(第二种语法)
要创建可使用其他工具直接应用于数据库的SQL脚本,请执行以下操作:
-SourceMigration
:目标数据库中的当前迁移-TargetMigration
:要更新到的迁移和-Script
:要生成可手动应用的脚本
@JotaBe的答案是正确的。但总而言之,您需要执行以下操作:
add-migration "MigrationName" -ProjectName Sharp.Data -ConnectionString "ConnectionStringToYourTargetDatabaseHere"