Próbuję EF Core po raz pierwszy i zakodowałem bardzo prostą aplikację MVC, aby zmoczyć stopy. Używam metody obsiewania bazy danych znalezionej w UnicornStore project, w której zapisują kod w Startup.cs
w celu przeprowadzenia migracji bazy danych, a następnie uruchomienia metody seed.Dlaczego program Visual Studio mówi mi, że muszę odwołać się do System.Private.CoreLib?
Przed nazywają metodę nasion, biegną tej metody DbContext
przedłużacza aby sprawdzić, czy wszystkie migracje zostały zastosowane:
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();
}
}
}
mam umieścić ten sam sposób w mojej aplikacji i wszystko działa - kod kompiluje i baza danych jest migrowana i inicjowana. Jednakże Visual Studio (2017 Enterprise) jest czerwone podkreślenie ta linia:
context.GetService<IMigrationsAssembly>()
.Migrations
.Select(m => m.Key);
Gdybym najechaniu na czerwonej linii, mówi mi:
sekcji „System.Private.CoreLib, Version = 4,0 .0.0, Culture = neutral, TokenKluczaPublicznego = foo”powinny zostać odniesione
Czy ktoś może mi powiedzieć, dlaczego ja dostaję tę wiadomość? Naprawdę próbowałem dodać odniesienie do System.Private.CoreLib
, aby zobaczyć, co się stanie, a to spowodowało mnóstwo błędów (undefined System.Object
, itp.). Nigdy nie czuję się komfortowo, pozostawiając takie rzeczy nierozwiązane na wypadek, gdyby wróciły, by ugryźć mnie później, więc każda rozdzielczość (lub potwierdzenie, że mogę to zostawić i zignorować wiadomość) byłaby doceniona!
Dzięki za to! To chyba załatwiło sprawę! – Jim