3

I'm using ef 6 and unity container. when i don't initialize default dbcontext constructor then unity can't recognize controller injection.but when initialize default dbcontext constructor and i use

Database.SetInitializer<EfDbContext>(null);

that time it throw "The underlying provider failed on Open" and Cannot attach the file Migrations.EfDbContext.mdf Db Migrations error

public EfDbContext() : base()
{
    Database.SetInitializer<EfDbContext>(null);
}

public EfDbContext(string connectionString) : base(connectionString)
{
   Database.SetInitializer<EfDbContext>(null);
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

Call from Service

public JsonResult Something()
{
    using (var db = new EfDbContext("con1"))
    {
        db.Database.Connection.Open();
        var data = db.Database.SqlQuery<Something>("SELECT * FROM [dbo].[Table]").ToList();
        db.Database.Connection.Close();
    }
    ..............
}

And UnityConfig

public static void RegisterComponents()
{
    var container = new UnityContainer();

    container.RegisterType(typeof(IService<>), typeof(Service<>));
    ConventionRegistrar.Configure(container);

    GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
}

1 Answer 1

1

Please Try..

public EfDbContext() : this("Pass Your Default Connection String")
{

}

public EfDbContext(string connectionString) : base(connectionString)
{

}
//DBSet's

protected override void OnModelCreating(DbModelBuilder modelBuilder)  
{

 base.OnModelCreating(modelBuilder);

 Database.SetInitializer<ApplicationDbContext>(null);

 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

 //... Fuluent api
}

Hopefully it will be worked.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.