我第一次尝试使用EF Core并编写了一个非常简单的MVC应用程序来让我的脚湿透。我正在使用一种方法来播种UnicornStore project中找到的数据库,在Startup.cs
中编写一些代码来迁移数据库,然后运行种子方法。
在调用种子方法之前,他们会运行此DbContext
扩展方法来检查是否已应用所有迁移:
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
namespace UnicornStore.Models
{
public static class DbContextExtensions
{
public static bool AllMigrationsApplied(this DbContext context)
{
var applied = context.GetService<IHistoryRepository>()
.GetAppliedMigrations()
.Select(m => m.MigrationId);
var total = context.GetService<IMigrationsAssembly>()
.Migrations
.Select(m => m.Key);
return !total.Except(applied).Any();
}
}
}
我已经在我的应用程序中使用了相同的方法,一切正常 - 代码编译,数据库被迁移和播种。但是,Visual Studio(2017 Enterprise)是红色的下划线:
context.GetService<IMigrationsAssembly>()
.Migrations
.Select(m => m.Key);
如果我将鼠标悬停在红线上,它会告诉我:
Module&#39; System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral, 公钥= FOO&#39;应引用
谁能告诉我为什么收到这条消息?我实际上尝试添加对System.Private.CoreLib
的引用以查看会发生什么,并且导致大量错误(未定义System.Object
等)。如果他们以后再回来咬我,我会永远不会放弃这样的事情,所以任何解决方案(或者我可以留下这个并且忽略该消息的确认)将不胜感激!
答案 0 :(得分:14)
你安装了R#吗?您可能遇到过这个问题:RSRP-464676
如果是这样,请尝试暂停R#并查看问题是否已再次显示。
答案 1 :(得分:0)
就像另一个回应一样,似乎我的幸福快乐alt-enter
垃圾邮件让我导入了System.Private.CoreLib
的汇编引用,我认为这是来自线程命名空间导入修复。检查是否已被引用。
答案 2 :(得分:0)
我遇到了同样的问题。升级到最新版本的Resharper解决了这个问题。
答案 3 :(得分:0)
SAFE-Stack的服务器模板代码在VS Code(vscode)中也有类似的问题。通过将<Reference include="netstandard" />
添加到关联的fsproj
项目文件sugggested on github here可以解决此问题,如下所示:
<Project Sdk="Microsoft.NET.Sdk.Web">
..
<ItemGroup>
..
<Reference include="netstandard" />
..
</ItemGroup>
</Project>