Ef code first EntityFramework6(EF6)在单独的项目中使用模型进行代码优先迁移

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项目中的模型所做的更改。但

使用EF6 code first迁移,我能够成功地保存模型并为它们创建新的迁移。但是,我的DbContext类位于
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"