将连接字符串发送到ApplicationDBContext

时间:2015-04-23 21:53:55

标签: c# asp.net-mvc-5 asp.net-identity owin

我已经定制了ApplicationDBContext类,以通过其构造函数接收连接字符串。它可以在直接调用时连接到数据库OK但是当通过app.CreatePerOwnContext调用时我无法调用它。我的课程定义如下:

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

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

问题在于以下行中的Startup.Auth.cs调用它。

app.CreatePerOwinContext(ApplicationDbContext.Create);

create方法也接受一个连接字符串,但以下内容不起作用

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

它会产生以下错误:

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.

将连接字符串发送到ApplicationDbContext类的正确语法是什么,以便Owin上下文可以引用它?

连接字符串是正确的但是为了完整性,设置它的代码在下面。

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

1 个答案:

答案 0 :(得分:13)

请查看您正在使用的方法的declaration

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

期待Func<T>类型的参数。

因此您需要将代码更改为:

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