Я использую EF 6 и контейнер Юнит. когда я не инициализирую конструктор dbcontext по умолчанию, то единство не может распознать контроллер инъекции. но когда инициализируется конструктор dbcontext по умолчанию, и я использую
Database.SetInitializer <<code>EfDbContext> (null) ;
в это время он выбрасывает «Не удалось открыть базовый поставщик при открытии» и Невозможно прикрепить файл Migrations.EfDbContext.mdf Db Ошибка миграции
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>();
}
Звонок из службы
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();
}
..............
}
и UnityConfig
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType(typeof(IService<>), typeof(Service<>));
ConventionRegistrar.Configure(container);
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
}