EF6迁移已停止在VS 2015 RC上运行

时间:2015-05-03 22:44:55

标签: entity-framework-6 visual-studio-2015

我现在一直在使用VS2015CTP我决定将其升级到VS2015社区RC由于某些未知原因,我的项目上的迁移停止了工作。

在Visual Studio 2015中,我收到以下消息>

PM> update-database
Exception calling "LoadFrom" with "1" argument(s): "The specified path, file name, or both are too long. The fully qualified file name must be less 
than 260 characters, and the directory name must be less than 248 characters."
At G:\Projects\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:780 char:5
+     $utilityAssembly = [System.Reflection.Assembly]::LoadFrom((Join-Path $ToolsP ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : PathTooLongException

You cannot call a method on a null-valued expression.
At G:\Projects\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:781 char:5
+     $dispatcher = $utilityAssembly.CreateInstance(
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Exception calling "CreateInstanceFrom" with "8" argument(s): "The specified path, file name, or both are too long. The fully qualified file name 
must be less than 260 characters, and the directory name must be less than 248 characters."
At G:\Projects\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:809 char:5
+     $domain.CreateInstanceFrom(
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : PathTooLongException

PM> 

如果我在VS 2013中打开解决方案并运行上述命令,一切正常。 这是VS中的一些错误,它是否失去了对某些东西的引用? 有没有办法激活某种更广泛的日志,我真的不觉得调试EF。

由于

编辑: 我认为这与在Visual Studio 2015中处理Nuget的方式有关,似乎它没有以同样的方式查看nuget.config。 我在同一个文件夹中包含多个解决方案的所有包,为此我在.nuget文件夹下使用nuget.config:

<config>
    <add key="repositoryPath" value="G:/Projects/packages" />
</config>

出于某种原因,似乎VS2015没有像VS2013那样处理它,因为它试图将软件包下载到解决方案文件夹下的文件夹包中。

4 个答案:

答案 0 :(得分:5)

将实体框架版本从6.1.3降级为EF 6.1.2,现在可以使用。

https://github.com/aspnet/EntityFramework/issues/1950

答案 1 :(得分:1)

另一个原因可能是在两个或更多项目中使用EF(https://github.com/NuGet/Home/issues/528

临时解决方案:评论

<package id="EntityFramework" version="6.1.3" targetFramework="net46" userInstalled="true" /> 
所有“packages.config”的

只留下您想要使用迁移的项目。

答案 2 :(得分:1)

问题源于多个项目引用EF。

现有的答案都不适合我。我可以解决的唯一方法是卸载所有引用EF的项目,而不是我运行Update-Database的项目。

答案 3 :(得分:0)

这是由NuGet bug引起的

请参阅Enable Migrations Error

建议的解决方法是

安装可解决此问题的更新的NuGet客户端 https://nuget.codeplex.com/releases/view/615507

下载此修补版本的EntityFramework.psm1

EntityFramwework.psm1

将其复制到packages \ EntityFramework.6.1.3 \ tools目录中,重新启动Visual Studio,然后重试。

卸载引用实体框架的其他项目

因此,引用Entity Framework的唯一加载项目是包含EF模型的项目