У меня странная ситуация. Мне нужно использовать Entity Framework 6.2 для моего основного приложения .net.
Обычный контроллер
public class SampleApiController : BaseController
{
// use _repo and other stuff
}
Базовый контроллер
public class BaseController : Controller
{
protected IRepo_repository;
public BaseController(IRepo repository)
{
_repository = repository;
}
public BaseController() : this(null)
{
}
}
Приложение DBContext
public class SampleContext : DbContext
{
public SampleContext(string connectionString)
:base(connectionString)
{
try
{
this.Database.Log = (s) => System.Diagnostics.Debug.Write(s);
}
catch (Exception e)
{
//CurrentLogger.Log.Error(e);
}
}
public DbSet<Test1> Test1s { get; set; }
public DbSet<Test2> Test2s { get; set; }
}
Интерфейс репозитория
public interface IRepo
{
// methods definition
}
Репозиторий класса
public interface Repo : IRepo
{
// methods implementation
}
Startup.cs -> метод ConfigureServices
services.AddScoped<SampleContext>((s) => new SampleContext(configuration["ConnectionStrings:SampleApp"]));
services.AddScoped<IRepo, Repo>();
На этом рисунке вы видите, что параметр хранилища пуст ... не инициализирован с экземпляром Repo ... (!!! На этом рисунке IRepo is IRepositoryBase)
Решение!
Как отмечали CodeNotFound и Riscie в комментариях, проблема заключалась в том, что BaseController был инициализирован нулем ... Спасибо, ребята!