我现在重新提出这个问题,我对这个问题有了更清楚的了解。我说问题,因为我没有看到这种行为的任何合理原因。
我有一个包含三个项目的解决方案:
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的社区版,尝试了两个不同的系统,新项目并获得相同的行为。
提前致谢!
答案 0 :(得分:0)
根据-startupproject标志的提示,我找到了一个解决方案。
为了对不是启动项目的项目使用update-database命令,你必须在同一个调用中同时传递-projectname和-startupproject标志,例如:
update-database -project datalayer -startupproject datalayer