2015-04-23 17 views
5

Ich habe die ApplicationDBContext-Klasse angepasst, um über ihren Konstruktor eine Verbindungszeichenfolge zu erhalten. Es kann eine Verbindung zur Datenbank herstellen, wenn es direkt aufgerufen wird, aber wenn es über die app.CreatePerOwnContext aufgerufen wird, kann ich es nicht aufrufen. Meine Klassendefinition ist unter:Verbindungszeichenfolge an ApplicationDBContext senden

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext(string databaseConnection) 
     : base(databaseConnection, throwIfV1Schema: false) 
    { 
    } 

    public static ApplicationDbContext Create(string databaseConnection) 
    { 
     return new ApplicationDbContext(databaseConnection); 
    } 
} 

Das Problem ist, wenn es von Startup.Auth.cs in der folgenden Zeile genannt wird.

app.CreatePerOwinContext(ApplicationDbContext.Create); 

Die create-Methode nimmt auch eine Verbindungszeichenfolge, aber die folgenden nicht

app.CreatePerOwinContext(ApplicationDbContext.Create(connectionString)); 

Es erzeugt den folgenden Fehler funktioniert:

Error 1 The type arguments for method 'Owin.AppBuilderExtensions.CreatePerOwinContext<T>(Owin.IAppBuilder, System.Func<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. 

Was die korrekte Syntax, um eine Verbindung zu senden ist Zeichenfolge an die ApplicationDbContext-Klasse, damit der Owin-Kontext darauf verweisen kann?

Die Verbindungszeichenfolge ist korrekt, aber der Vollständigkeit halber ist der Code, der sie festlegt, unten angegeben.

string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
+0

schwer zu beantworten, wenn Sie nicht zeigen, wie Sie den Wert der Connectionstring zuweisen .. Sie alle relevanten Code zu müssen .. auch verwenden der Debugger .. – MethodMan

+0

Die Verbindungszeichenfolge ist korrekt. Ich kann mit dem Klassenkonstruktor eine Verbindung zur Datenbank herstellen. Wo ich herunterfalle, ruft die Methode über app.CreatePerOwnContext auf. –

+0

der Fehler sagt Ihnen genau, was das Problem ist .. warum tun Sie nicht eine einfache Google-Suche auf die folgenden 'ApplicationDbContext.Create' und suchen Sie nach Beispielen .. auch wenn Sie Code einfügen .. bitte zeigen alle relevanten Code .. wir sind nicht Geist Leser .. auch eine separate Google-Suche auf MSDN 'createperowincontext' – MethodMan

Antwort

12

haben Sie einen Blick auf die declaration des Verfahrens Sie verwenden:

public static IAppBuilder CreatePerOwinContext<T>(
    this IAppBuilder app, 
    Func<T> createCallback) where T : class, IDisposable 

Es ist Func<T> ein Argument des Typs erwartet.

So müssen Sie den Code ändern zu:

app.CreatePerOwinContext(() => ApplicationDbContext.Create(connectionString)); 
Verwandte Themen