无法实例化IdentityDbContext传递SqlConnection的实例

时间:2014-12-07 16:21:16

标签: c# entity-framework entity asp.net-identity

我正在努力让我的实体框架IdentityDbContext与现有的SqlConnection实例一起工作。基本上,我有:

public class MyContext : IdentityDbContext<User> {

private static DbCompiledModel CreateDbCompiledModel()
        {
            //if (_compiledModel != null) return _compiledModel;
            using (var context = new KmContext())
            {
                var internalProp = typeof (DbContext)
                    .GetProperty("InternalContext", BindingFlags.NonPublic | BindingFlags.Instance);
                var internalContext = internalProp.GetValue(context);
                var modelBeingInitProp = internalContext.GetType().GetProperty("CodeFirstModel");
                var model = (DbCompiledModel) modelBeingInitProp.GetValue(internalContext);
                return (_compiledModel = model);
            }
        }

public MyContext(SqlConnection conn):base(conn, base(existingConnection, CreateDbCompiledModel(), false)
{

}
//...
}

由于IdentityDbContext隐藏了构造函数DbContext(DbConnection,bool)(一个开放的问题 - https://aspnetidentity.codeplex.com/workitem/1991),我需要使用构造函数DbContext(DbConnection,DbCompiledModel,bool),它由IdentityDbContext使用的构造函数公开在上面的代码中。问题是传递DbCompiledModel的有效实例远非微不足道,因为它可以在静态方法CreateDbCompiledModel()中看到。此外,此代码不起作用,因为我有例外“无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用Code First或Code First Migrations创建的数据库的模型兼容性。”

我需要让它发挥作用,但我现在已经没法了。任何人都可以帮助我吗?

0 个答案:

没有答案