在多个项目中使用EF进行Entitiy Framework迁移

时间:2015-06-10 14:10:34

标签: entity-framework powershell model-view-controller database-migration

目前我尝试将我的数据模型分离到同一解决方案中的不同项目中,首先是代码。如果我只有一个安装了EF(6.1.3)的项目,则迁移(Enable-MigrationAdd-Migration)按预期工作。

但是当我添加其他项目并安装EF数据包时,如果我尝试Enable-Migration,我就会收到此错误:

Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\projects\IMS 2\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:713 char:27
+     $toolsPath = Join-Path <<<<  $installPath tools
    + CategoryInfo          : InvalidData: (:) [Join-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand

Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\projects\IMS 2\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:780 char:73
+     $utilityAssembly = [System.Reflection.Assembly]::LoadFrom((Join-Path <<<<  $ToolsPath EntityFramework.PowerShell.Utility.dll))
    + CategoryInfo          : InvalidData: (:) [Join-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand

You cannot call a method on a null-valued expression.
At C:\projects\IMS 2\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:781 char:50
+     $dispatcher = $utilityAssembly.CreateInstance <<<< (
    + CategoryInfo          : InvalidOperation: (CreateInstance:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\projects\IMS 2\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:810 char:19
+         (Join-Path <<<<  $runner.ToolsPath EntityFramework.PowerShell.dll),
    + CategoryInfo          : InvalidData: (:) [Join-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand

EF似乎在两个项目中都运行良好。将EF重新安装到其中一个或两个项目都无法解决问题。有什么解决方案吗?

编辑:我开始了一个包含3个项目的新解决方案,1。用于basecontext(public class BaseContext<TContext> : DbContext where TContext : DbContext ...),2。用于基类,3。用于创建基于上下文和类的上下文。如果我只将ef放入其中,那么迁移就可以了,或者至少告诉我它无法找到上下文,但是如果我将它安装到多个上下文中,那么它会再次产生错误。

2 个答案:

答案 0 :(得分:0)

我今天发现了同样的问题,我不得不卸载EF并重新安装。

PM&GT; Uninstall-Package EntityFramework -Force

PM&GT; Install-Package EntityFramework -Pre

答案 1 :(得分:0)

好的,解决了,问题不是EF或VS2015,而是我的Windows 7,因为它附带了PowerShell 2,但EF或VS需要PowerShell 3才能正常工作。更新后,错误消失了。

然后我运行这个错误:https://connect.microsoft.com/VisualStudio/feedback/details/1302181/add-migration-bug目前正在审核的内容。

这似乎是由VS2015 RC版本中的一些配置错误引起的。使用powershell 2回到VS13,重新安装了相关的nuget软件包,现在工作正常。