实体框架核心1.1.2迁移异常

时间:2018-02-27 13:59:52

标签: c# .net-core entity-framework-core ef-migrations

我遇到了一些奇怪的例外情况。

我已经看到以下线程讨论将Microsoft.EntityFrameworkCore.Tools降级为1.1.1我已经做过,但仍然出现了这些异常。

System.ArgumentNullException: Value cannot be null.
Parameter name: contentRootPath
   at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations..ctor(IOperationReporter reporter, Assembly assembly, Assembly startupAssembly, String environment, String projectDir, String contentRootPath, String rootNamespace)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.<>c__DisplayClass4_0.<.ctor>b__4()
   at Microsoft.EntityFrameworkCore.Internal.LazyRef`1.get_Value()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

任何人都可以在这方面提供帮助。

2 个答案:

答案 0 :(得分:1)

回顾一下,我在尝试运行dotnet CLI命令时遇到此错误。我发现的问题是CLI环境默认使用 dotnet ef 命令的.NET Core 2.0版本,但是我需要使用.NET Core 1.1版本因为那是构建软件包版本所依据的。

我发现(通过运行 dotnet --info ),环境中安装了多个版本的.NET Core SDK,并且默认情况下,Path指向最新版本。要使用旧版本,我在解决方案根目录中添加了一个带有特定版本号的 global.json 文件。例如

<unit name="test1">
    <unit_meta>
        <label>abcdef</label>
    </unit_meta>
    <item name="test1">
        <item_meta/>
        <valuedate>20180101</valuedat>
    </item>
</unit>
<unit name="test2">
    <unit_meta>
        <label>qwert</label>
    </unit_meta>
    <item name="test2">
        <item_meta>
            <label>blabla</label>
        </item_meta>
        <valuedate>20182020</valuedate>
    </item>
</unit>
<unit name="test3">
    <unit_meta>
        <label>wasd</label>
    </unit_meta>
    <item name="test3">
        <item_meta>
            <label>asdf</label>
        </item_meta>
        <valuedate>20180303</valuedate>
    </item>
</unit>

一切正常。

答案 1 :(得分:0)

确保所有版本对齐。

<ItemGroup>
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.5" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.5" />
</ItemGroup>

<ItemGroup>
  <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
                          Version="1.1.5" />
</ItemGroup>