5

Ich habe ein wirklich nerviges Problem, bei dem jedes Mal, wenn ich versuche, eine Migration zu meinem Projekt hinzuzufügen, stürzt dotnet und die Migration wird nicht erstellt. Dies geschieht unabhängig davon, ob ich dotnet ef migrations add oder Add-Migration verwende. Der Befehl beginnt zu laufen und die Kompilierung erfolgt bei Bedarf, dann stürzt er mit einer StackOverflowException ab. Debugging liefert die folgenden Informationen:"dotnet funktioniert nicht mehr" StackOverflowException beim Hinzufügen von Datenbankmigration

Unhandled exception at 0x00007FFF798C97DE (coreclr.dll) in dotnet.exe: 0xC00000FD: Stack overflow (parameters: 0x0000000000000001, 0x000000AC03A75FF8). 

Es spielt auch keine Rolle, ob mein Kontext ein Dbset hat, deren Objekte haben eine int Eigentum oder alle Objekte mit ihren komplexen Eigenschaften und Sammlungen, et cetera. Der einzige Fall, in dem ich eine Migration und einen Snapshot generieren kann, ist, wenn mein Kontext keine DbSets hat.

Ich habe versucht, sowohl die Vorabversion und Release-Versionen von .NET Core, sowie die vollständige Deinstallation des .NET Core SDK (da alte Versionen noch installiert waren) und Visual Studio und Neuinstallation von ihnen.

I von Visual Studio Enterprise 2.015,3 unter Windows 10 Pro und meine Modellklasse bin mit unter:

public class Player 
{ 
    [Key] 
    public int PlayerID { get; set; } 
} 

und mein Kontext ist wie folgt:

public class LeagueContext : DbContext 
{ 
    public LeagueContext(DbContextOptions<LeagueContext> context) : base(context) 
    { 

    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 

    } 

    public virtual DbSet<Player> Players { get; set; } 
} 

und meine Service-Konfiguration:

Mein project.json, wie gefordert:

{ 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0", 
     "type": "platform" 
    }, 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "Microsoft.EntityFrameworkCore": "1.0.0", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final" 
    }, 

    "tools": { 
    "BundlerMinifier.Core": "2.0.238", 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "Areas/**/Views", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "bower install", "dotnet bundle" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 
+1

Kann die project.json posten und hoffe, dass jede Referenz richtig ist. – Anuraj

+0

@Anuraj Ich habe es zum Beitrag hinzugefügt. – Ceshion

+0

Seltsam. Es funktioniert ohne Probleme in meinem System. Ich benutze die von Yoman generierte ASP.NET Web App. Nur ändern Ich verwende eine fest codierte Verbindungszeichenfolge als das Lesen von config. Ich hoffe, Sie verwenden Version 1.0.0-preview2-003121 von dotnet.exe. – Anuraj

Antwort

0

Ich denke, ich habe es herausgefunden. Während ich meinen Code auf nur eine Sammlung mit einer Eigenschaft reduziert habe, habe ich ihn nicht gespeichert, bevor ich Add-Migration ausgeführt habe, so dass immer noch mehr vom Modell verwendet wurde. Was es wurde mit sah wie folgt aus:

public class Player 
{ 
    [Key] 
    public int PlayerID { get; set; } 

    public int OrganizationID { get; set; } 

    public int CurrentTeamID { get; set; } 

    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public DateTime JoinDate { get; set; } 

    [ForeignKey("PlayerID")] 
    public virtual PlayerAccount Account { get; set; } 

    //[ForeignKey("PlayerID")] 
    //public virtual PlayerCareer Career { get; set; } 

    //[ForeignKey("PlayerID")] 
    //public virtual PlayerInfo Info { get; set; } 
} 

und

public class PlayerAccount 
{ 
    [Key] 
    public int PlayerID { get; set; } 

    public string Category { get; set; } 

    public bool LeagueEmails { get; set; } 

    public bool GameReminders { get; set; } 

    [ForeignKey("PlayerID")] 
    public virtual Player Player { get; set; } 
} 

die in der Tat eine kreisförmige Referenz hat. Ich weiß nicht, warum ich nicht daran gedacht habe, obwohl ich denke, dass es ein bisschen merkwürdig ist, dass dieser Fall nicht behandelt wird, besonders da dies ein logischer Weg scheint, eine Eins-zu-eins-Beziehung aufzubauen. Im Nachhinein denke ich daran, das ForeignKey-Attribut nicht auf der unabhängigen Seite zu verwenden, wie EF funktioniert.

Verwandte Themen