J'essaie EF Core pour la première fois et j'ai codé une application MVC très simple pour me mouiller les pieds. J'utilise une méthode pour créer la base de données trouvée dans le projet UnicornStore où ils écrivent du code dans Startup.cs
pour migrer la base de données, puis exécuter une méthode de départ.
Avant d'appeler la méthode de départ, ils exécutent cette méthode d'extension DbContext
pour vérifier si toutes les migrations ont été appliquées:
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();
}
}
}
J'ai mis cette même méthode dans mon application et tout fonctionne: le code est compilé et la base de données est migrée et intégrée. Cependant, Visual Studio (2017 Enterprise) est en rouge soulignant cette ligne:
context.GetService<IMigrationsAssembly>()
.Migrations
.Select(m => m.Key);
Si je survole la ligne rouge, il me dit:
Module 'System.Private.CoreLib, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = foo 'devrait être référencé
Quelqu'un peut-il me dire pourquoi je reçois ce message? J'ai en fait essayé d'ajouter une référence à System.Private.CoreLib
pour voir ce qui se produirait, ce qui a entraîné une tonne d'erreurs (System.Object
non défini, etc.). Je ne suis jamais à l'aise de laisser des choses comme celle-ci non résolues au cas où elles reviendraient me mordre plus tard, donc toute résolution (ou la confirmation que je peux laisser cela être et ignorer le message) serait appréciée!
Avez-vous installé R #? Vous avez peut-être frappé ce problème: RSRP-464676
Si c'est le cas, essayez de suspendre R # et voyez si les problèmes ne sont plus affichés.
J'ai eu le même problème. La mise à niveau vers la dernière version de Resharper a résolu le problème.
Juste comme une réponse alternative, il semble que mon spam alt-enter
happy-go-lucky nous ait conduit à importer une référence Assembly à System.Private.CoreLib
, qui, je pense, provenait d'un correctif d'importation d'espace de noms threadé. Vérifiez si cela a été référencé.