13

当每次我需要添加迁移或更新数据库时使用 EF 4.3.1 迁移时,我必须使用 StartUpProject 参数。我可以把它设置在某个地方,这样我就不必继续这样做了吗?我不想将我的数据项目设置为启动项目。如果有影响的话,我的上下文和迁移在不同的项目中。

不使用 StartpProject 参数时引发的异常:

update-database -verbose
Using NuGet project 'Data.Deployment'.
Using StartUp project ''.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
   --- End of inner exception stack trace ---
   at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at System.Management.Automation.ComMethod.InvokeMethod(PSMethod method, Object[] arguments)
Exception has been thrown by the target of an invocation.
4

4 回答 4

11

至少在 Entity Framework 6 中,要指定启动项目,请使用-StartUpProjectNameupdate-database 的参数:

update-database -StartUpProjectName <String>

您可以使用get-help包管理器控制台中的命令来查看命令的可能参数:

get-help update-database -detailed
于 2015-03-11T20:11:40.863 回答
2

我不确定这是否是您所说的,但是您可以将包管理器控制台中的默认项目设置为您的迁移配置所在的项目;这是最右边的下拉列表。
这样,我就不必提供启动项目作为论据。

于 2012-08-27T08:29:19.900 回答
2

使用 StartupProject 参数:Update-database -StartupProject "PROJECTNAME"

于 2016-07-07T20:52:28.517 回答
1

解决此问题的一种干净方法是将测试项目附加到解决方案中。

即使您不想编写大量单元测试,它也是一个适合数据层命名空间或类似的启动项目。

这使您的启动问题更清晰,包管理器适用于整个解决方案 IIRC - 因此请确保默认项目是其中包含迁移文件夹的项目。

于 2012-08-30T12:46:08.223 回答