我已经启动了一个新的ASP.NET Core 2.0项目,我使用了Entity Framework with Identity。
起始数据库模式由以下表组成:
当前架构的一切都按预期工作,我对现有数据表操作没有任何问题。
现在我想改变数据库架构。我想添加一些新表,但我发现很难找到一些文档来帮助我理解这样做的方法。
现在我正在关注" 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"
当我点击新网址时,我收到以下消息:
我知道我应该应用迁移,但我想知道为什么会出现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。确保您使用正确的程序集,并且该类型既不是抽象的也不是通用的。
我不确定如果这是我应该遵循的程序。 如果我在一个问题中陈述了太多问题,那么任何可以提供帮助的帮助或链接都会非常感激和不好意思。
答案 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,这是最新版本,并且迁移已正确完成。