ASP.NET Core 2.0 Identity将新模型 - 表添加到数据库

时间:2017-12-29 19:08:41

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

我已经启动了一个新的ASP.NET Core 2.0项目,我使用了Entity Framework with Identity。

起始数据库模式由以下表组成:

enter image description here

当前架构的一切都按预期工作,我对现有数据表操作没有任何问题。

现在我想改变数据库架构。我想添加一些新表,但我发现很难找到一些文档来帮助我理解这样做的方法。

现在我正在关注" Create an app with user data protected by authorization"我从creating a new model开始到我的申请。

创建新模型并为此模型构建控制器后,我的appsettings.json中创建了一个新的Context。我刚刚使用了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"

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

enter image description here

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

此外,当我尝试根据PMC中的文档尝试应用迁移(根据this添加 - 迁移初始 - 上下文 - esendContext,因为我得到了关于我应该使用的上下文的错误)

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

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

  

调用方法时遇到错误' BuildWebHost'在课堂上   '计划&#39 ;.继续没有应用程序服务提供商。错误:   无法加载文件或程序集' Microsoft.EntityFrameworkCore,   Version = 2.0.1.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'。   定位的程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

     

在汇编' esend'中找不到DbContext。确保您使用正确的程序集,并且该类型既不是抽象的也不是通用的。

我不确定如果这是我应该遵循的程序。 如果我在一个问题中陈述了太多问题,那么任何可以提供帮助的帮助或链接都会非常感激和不好意思。

2 个答案:

答案 0 :(得分:2)

确保.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中创建了一个新的Context。”

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

答案 1 :(得分:0)

从我看到的我的错误与Microsoft.AspNetCore的版本有关。我使用的是2.0.0。

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