【问题标题】:Asp.net core on linux - dotnet ef database update fails with version errorlinux 上的 Asp.net 核心 - dotnet ef 数据库更新失败并出现版本错误
【发布时间】:2017-04-22 14:34:51
【问题描述】:

只需按照https://www.microsoft.com/net/core#linuxubuntuhttps://docs.microsoft.com/en-us/aspnet/core/getting-started 上的安装说明进行操作

到目前为止一切都很好,除了在http://localhost:5000/Account/Register 下创建新用户时失败并显示

SQLite 错误“没有这样的表:AspNetUsers”

尝试使用dotnet ef database update 创建表结构,但由于版本错误而失败。

现在我迷失了project.json中的所有不同版本,何时使用1.1.0以及何时使用1.0.0,何时应该使用preview1-finalpreview2-finalpreview3-final甚至更好preview2-update1

project.jsondotnet new -t web之后开箱即用

{
  "userSecretsId": "aspnet-WebApplication-0799fe3e-6eaf-4c5f-b40e-7c6bfd5dfa9a",

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.1.0-preview1-001153-00",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-update1",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-update1",
      "type": "build"
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8+dnxcore50",
        "portable-net45+win8"
      ]
    },
    "Microsoft.Extensions.SecretManager.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8+dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "netcoreapp1.1": {
      "imports": [
        "dotnet5.6",
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  },

  "tooling": {
    "defaultNamespace": "WebApplication"
  }
}

Asp.net core - no such table: AspNetUsers 看起来很相似,但它是 windows。

如何更新 project.json 以获取初始 ASP.net 核心模板并保存到 SQlite?或者关于 Ubuntu 上的 SQlite 还有什么遗漏吗? libsqlite3-0:amd64 版本3.14.1-1build1 已安装...

【问题讨论】:

    标签: asp.net linux sqlite asp.net-core entity-framework-core


    【解决方案1】:

    我在 MAC 上开发并部署到 Debian 时遇到了同样的问题。我最终将数据库文件从我的开发机器复制到生产服务器。如果您检查从发布命令生成的数据库文件,它是空的。希望对您有所帮助!

    【讨论】:

    • 打开了一个问题 github.com/aspnet/EntityFramework/issues/… 并使用 Ubuntu 16.04 和几个不同的 dotnet 核心版本进行了几次尝试。例如。 dotnet core sdk 1.0 preview4 build 004233
      似乎在较新版本的 Web 模板 (dotnet new -t web) 中,用户管理(使用实体框架和 sqlite)已被删除。调用 dotnet ef database update 会导致错误,例如找不到可执行文件。我尝试 dotnet asp.net core 的目的是评估它是否准备好开始一个商业项目。不是。
    【解决方案2】:

    借助 github 上的最新位 (1.0.0-rc4-004777) 和 github (EF Core Tools Bug Bash #7358) 上的一些帮助,我找到了解决方案

    wget https://dotnetcli.blob.core.windows.net/dotnet/Sdk/rel-1.0.0/dotnet-dev-ubuntu.16.04-x64.latest.tar.gz
    sudo mkdir /opt/dotnet
    sudo tar zxvf dotnet-dev-ubuntu.16.04-x64.latest.tar.gz -C /opt/dotnet
    sudo ln -s /opt/dotnet/dotnet /usr/local/bin
    mkdir testweb
    cd testweb
    dotnet new mvc --auth Individual
    dotnet restore
    

    编辑 .csproj 并添加

    <ItemGroup>
      <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
                              Version="1.0.0-msbuild3-final" />
    </ItemGroup>
    

    保存 .csproj 后,您将能够创建数据库并且模板可以正常运行。

    dotnet restore
    dotnet ef database update
    dotnet run
    

    通过以上所有内容,现在可以在 Linux 下运行模板并创建用户并登录 http://localhost:5000/Account/Register 并将 EntityFrameworkCore 存储到 sqlite。

    【讨论】:

      猜你喜欢
      • 2021-05-25
      • 2020-04-14
      • 1970-01-01
      • 2020-06-14
      • 2023-04-05
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多