【问题标题】:ASP.NET Core 2.0 Identity add new model - table to the DatabaseASP.NET Core 2.0 Identity 添加新模型 - 表到数据库
【发布时间】:2018-06-10 04:05:00
【问题描述】:

我已经启动了一个新的 ASP.NET Core 2.0 项目,并且我使用了带有 Identity 的实体框架。

起始数据库架构由以下表格组成:

在当前架构下一切正常,我对现有数据表操作没有任何问题。

现在我想更改数据库架构。我想添加一些新表,但我发现很难找到一些文档来帮助我理解如何做。

现在我关注“Create an app with user data protected by authorization”,我从creating a new model 开始到我的应用程序。

在创建新模型并为此模型搭建 Controller 后,在我的 appsettings.json 中创建了一个新上下文。我刚刚有了 DefaultConnection,现在添加了 esendContext。

"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-esend-069757D7-82B1-4850-8015-07D7D54AA712;Trusted_Connection=True;MultipleActiveResultSets=true",
"esendContext": "Server=(localdb)\\mssqllocaldb;Database=esendContext-25459d27-29ec-4943-ac91-6b9cb91a0dd6;Trusted_Connection=True;MultipleActiveResultSets=true"

当我点击新网址时,我收到以下消息:

我知道我应该应用迁移,但我想知道为什么会收到 SqlException: Cannot open database .... 错误

此外,当我尝试根据 PMC 中的文档应用迁移时(Add-Migration Initial -Context esendContext 根据this,因为我收到了关于我应该使用的上下文的错误)

Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration Initial
Update-Database

当我尝试更新数据库时,我得到了

在类上调用方法“BuildWebHost”时发生错误 '程序'。在没有应用程序服务提供商的情况下继续。错误: 无法加载文件或程序集“Microsoft.EntityFrameworkCore, 版本=2.0.1.0,文化=中性,PublicKeyToken=adb9793829ddae60'。 找到的程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)

在程序集“esend”中未找到 DbContext。确保您使用的是正确的程序集,并且该类型既不是抽象的也不是泛型的。

我不确定这是否是我应该遵循的程序。 如果我在一个问题中陈述了太多问题,我们将不胜感激任何帮助或链接。

【问题讨论】:

  • 您的解决方案中是否有多个项目?
  • @S.Akbari 不,我只有一个项目

标签: c# asp.net-mvc entity-framework asp.net-core-2.0


【解决方案1】:

确保您的 .csproj 具有该节点:

 <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

我不知道你这是什么意思: “在创建新模型并为此模型搭建控制器后,我的 appsettings.json 中创建了一个新的上下文。”

但是如果您使用的是 asp 身份,那么您的项目已经有一个 DbContext 并且您不需要一个新的 One !

【讨论】:

    【解决方案2】:

    据我所见,我的错误与 Microsoft.AspNetCore 的版本有关。我使用的是 2.0.0。

    根据this issue 和 bricelam 的回答,我已更新到最新版本 2.0.3,并且迁移已正确完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2021-04-11
      • 1970-01-01
      相关资源
      最近更新 更多