Sto provando EF Core per la prima volta e ho codificato una semplice applicazione MVC per bagnarmi i piedi. Sto usando un metodo per seminare il database trovato nel progetto UnicornStore dove scrivono del codice in Startup.cs
per migrare il database e quindi eseguire un metodo seed.
Prima di chiamare il metodo seed, eseguono questo metodo di estensione DbContext
per verificare se sono state applicate tutte le migrazioni:
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();
}
}
}
Ho messo lo stesso metodo nella mia applicazione e tutto funziona: il codice viene compilato e il database viene migrato e seminato. Tuttavia, Visual Studio (2017 Enterprise) è rosso sottolineando questa linea:
context.GetService<IMigrationsAssembly>()
.Migrations
.Select(m => m.Key);
Se passa il mouse sulla linea rossa, mi dice:
Modulo 'System.Private.CoreLib, Versione = 4.0.0.0, Culture = neutro, PublicKeyToken = foo' dovrebbe essere referenziato
Qualcuno può dirmi perché sto ricevendo questo messaggio? In realtà ho provato ad aggiungere un riferimento a System.Private.CoreLib
per vedere cosa sarebbe successo e questo ha causato un sacco di errori ( System.Object
indefinito, ecc.). Non mi sento mai a mio agio lasciare cose del genere irrisolte nel caso in cui tornino a mordermi più tardi, quindi qualsiasi risoluzione (o una conferma che posso lasciare questo essere e ignorare il messaggio) sarebbe apprezzata!
Hai installato R #? Potresti aver riscontrato questo problema: RSRP-464676
In tal caso, provare a sospendere R # e vedere se i problemi non vengono più visualizzati.
Si è verificato un problema simile in VS Code (vscode) con il codice modello del server SAFE-Stack. Il problema sembra risolto aggiungendo <Reference include="netstandard" />
al file di progetto fsproj
associato suggerito su github qui come segue:
<Project Sdk="Microsoft.NET.Sdk.Web">
..
<ItemGroup>
..
<Reference include="netstandard" />
..
</ItemGroup>
</Project>