使用EF目标启动项目进行代码优先部署?

时间:2017-11-04 18:59:14

标签: c# entity-framework

我现在重新提出这个问题,我对这个问题有了更清楚的了解。我说问题,因为我没有看到这种行为的任何合理原因。

我有一个包含三个项目的解决方案:

DataLayer项目

BusinessLogicLayer项目

赢取表单(设置为STARTUP项目)

DataLayer项目使用EF 6和Oracle Managed Client。我发现尽管enable-migration和add-migration成功地定位了我的DataLayer项目(通过在Package Manager的下拉列表中设置默认项目或使用-project标志),但update-database却没有。我实际上必须右键单击我的DataLayer项目并告诉visual studio将其设置为启动项目。

从测试开始,代码第一种方法中的update-database似乎在启动项目中寻找app.config,而不是选择默认项目。

我希望我的项目具有3层架构,保留所有与数据库相关的内容,并将EF隐藏在我的DataLayer项目中。我不想不得不继续将DataLayer项目更改为启动项目,只是为了更新数据库。这是正常的行为,还是我完全没有找到的东西?

附注:使用VS的社区版,尝试了两个不同的系统,新项目并获得相同的行为。

提前致谢!

1 个答案:

答案 0 :(得分:0)

根据-startupproject标志的提示,我找到了一个解决方案。

为了对不是启动项目的项目使用update-database命令,你必须在同一个调用中同时传递-projectname和-startupproject标志,例如:

update-database -project datalayer -startupproject datalayer