2016-08-22 24 views
0

Ich verwende ASP.NET Core mit EF Core Code zuerst. Ich bin die Definition der Dependency Injection des DbContext in Service-Konfiguration der Startup.cs meines ASP.NET Core-Projektes wie hier beschrieben (https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html):Verwenden Sie DbContext in anderen .NET-Klassenbibliothek

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddDbContext<TestContext>(options => 
      options.UseSqlServer(Configuration.GetConnectionString("DevelopmentDatabase"))); 
    } 

Aber ich will nicht das DbContext in einem verwenden, Controller wie auf der gleichen Website beschrieben, aber ich möchte es zusammen mit der Migration in ein anderes .NET Core Class Library-Projekt auslagern.

Wie bewerkstellige ich das?

+0

Zusammenfassung der DbContext mit einer Schnittstelle initiieren entweder direkt oder über Repository-Muster und rufen Sie das von Ihrem Controller – Nkosi

Antwort

1

Umsetzung des Repository Pattern

Es deutlich hier erklärt hat: Building Your First Web API with ASP.NET Core MVC

Aber registrieren Repository als:

services.AddScoped<ICustomerRepository, CustomerRepository>(); 

statt .AddSingleton wie der Link schon sagt, der Verwendung von this other problem zu vermeiden.

+0

That ist was ich versuche zu tun, aber ich möchte die Repository-Klasse in einem zusätzlichen Projekt (vorzugsweise eine .NET Core Class Library) implementieren. Die Beschreibung in Ihrem Link erklärt, wie Sie es in einem einzigen Projekt tun. – Palmi

+0

Es sollte kein Unterschied sein, es auf anderen Assembly zu haben, solange Sie es in 'ConfigureServices' registrieren ... –

0

ich in einer DLL-Bibliothek-Projekt legte meine xxxDbContext nur, entschied sich aber Migrationen in der asp-Projekt zu halten:

protected override void OnConfiguring(DbContextOptionsBuilder b) 
    { 
     base.OnConfiguring(b); 
     b.UseSqlServer("Data Source=...", x => x.MigrationsAssembly("WebApp1")); 

Wenn Sie nicht MigrationsAssembly verwenden, Ihre Wanderungen in die dll gehen sollte, glaube ich.

Aber ich habe Probleme mit der DLL in einem anderen Projekt habe, kann ich keine Verbindung zu der Datenbank

Verwandte Themen