首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Migration.exe -connectionString参数无法在CI服务器上执行EF迁移。

问Migration.exe -connectionString参数无法在CI服务器上执行EF迁移。
EN

Stack Overflow用户
提问于 2017-10-10 15:00:50
回答 1查看 930关注 0票数 0

我试图在构建服务器上进行代码优先迁移的数据库更新。

我读过有关使用EF 6工具中的migration.exe和传递misc的文章。上下文和连接设置作为migrate.exe调用的参数。

我希望能够将连接字符串、默认目录和安全本身直接指定为参数。

问题是,当我指定连接字符串时,例如:

migrate.exe Ef.Data.DLL /ConnectionString:"Data Source=myserver;Initial Catalog=MyCatalog;Integrated Security=true“/connectionProviderName:System.Data.SqlClient /verbose

然后migrate.exe会抛出一个错误:

System.InvalidOperationException:在应用程序配置文件中找不到名为“MyContext”的连接字符串

我的上下文是用如下代码定义的:

public MyContext(): base("name=MyContext")

因此,它需要一个MyContext连接字符串,就像它仍然试图为此使用App.Config或web.config一样,但它不应该这样做,因为我将这些信息作为参数传递进来。

如果我试图将ConnectionStringName指定为参数(-connectionStringName:MyContext),则沿其他arg。我得到:

错误:只能指定一个/connectionStringName或/connectionString。

所以我被困在这里了。似乎解决不了这个问题。任何想法都会受到高度赞赏。

EN

回答 1

Stack Overflow用户

发布于 2017-10-26 00:25:21

我今天也有同样的问题。对我来说,它是通过更改上下文构造函数来排序的,如下所示:

代码语言:javascript
复制
public RootContext() : base("name=MyContext")

对此:

代码语言:javascript
复制
public RootContext() : this("MyContext")

让name=位于上下文名称的前面,强制在配置中找到值,否则会引发错误。当您只从Visual部署时,这是很好的,因为如果您的字符串不匹配,它将有助于抛出错误,但在尝试从命令行在不同环境中自动迁移时就不是那么好了。

因此,如果您做了这个更改,在VS中运行迁移时要小心--如果您的字符串不匹配,它将很高兴地继续,并在LocalDB中创建一个名为"MyContext“的新数据库,而不告诉您它是这样做的!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46669953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档