Wie man ConnectionString aus EF7 DbContext
Mein Szenario:
Ich bin mit EF7 für standard-CRUD-Operationen und Dapper für komplexere Abfragen erfordern, dass der Anstieg in der Geschwindigkeit. Aus dem startup.cs ich bin Injektion meine DbContext
in meine DAL welche dann nicht offensichtlich wird die Datenbank Abfragen. Dapper erfordert eine Verbindungszeichenfolge. Ich will Spritzen meine EF7 DbContext-Verbindungszeichenfolge in der Dapper-Abfrage.
Meine Frage:
Wie bekomme ich die Verbindungszeichenfolge aus der DbContext wie vor: DbContext.Database.Connection
?
Wechselte er von Database
zu DatabaseFacade
Typ EF7, und mit, dass DbConnection Connection
wurde auch entfernt.
Sicherlich sollte es eine dauerhafte Verbindung Zeichenfolge in das DbContext
dass ich Abfragen kann?
Meiner Forschung:
Die Methode, die ich verwende im moment ist, und es funktioniert:
public partial class CustomContext : DbContext
{
public readonly string _connectionString;
public CustomContext (DbContextOptions options)
: base(options)
{
_connectionString = ((SqlServerOptionsExtension)options.Extensions.First()).ConnectionString;
}
}
Ich weiß, das ist noch in der beta, aber bin ich etwas fehlt?
Vielen Dank für Ihre Zeit.
- FYI ich bin mit der beta7 von EF7.
- Anmerkung: sollten Sie mithilfe der .FromSql(Abfrage) und .AsNoTracking () - Methoden zu verbessern-und EF-s-Abfrage Geschwindigkeit, so dass Sie nicht brauchen, Dapper + EF in einem Projekt.
- Sie führen mich direkt. Dies funktioniert für mich.ctor: öffentliche DbContext(DbContextOptions<DbContext - > Optionen) : base(options) { this.Datenbank = new DatabaseFacade(this); }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gesucht habe EF7 Quellen und es scheint, dass Sie richtig sind mit Ihrem aktuellen Ansatz.
Connection string gespeichert ist, in
SqlServerOptionsExtension
. Wenn Sie anrufenUseSqlServer(connectionString)
der code ist wie folgt (extrahiert nur die interessanten Zeilen):Ich bin mir nicht sicher, warum Verbindungszeichenfolge entfernt wurde, aus offensichtlichen Platz, aber es kann sein, dass devs abstrahiert Verbindungszeichenfolge, um uns zu ermöglichen die Verwendung von nicht-standard-Datenbanken (in-memory-Datenbank-etc.).
Das sieht viel übersichtlicher IMO:
Wenn Sie eine vollständig materialisiert Kontext, können Sie auch dieses verwenden: