У меня есть класс, основанный на DbContext, и он генерируется автоматически дизайнером EF (в настоящее время используется база данных First). DbContext находится в собственной сборке под названием «Модель».Регистрация интерфейса с Autofac?
public partial class MyContext : DbContext {}
У меня есть код в другом частичном классе и реализации интерфейса:
public interface IMyContext
{
int Commit();
Task<int> CommitAsync(CancellationToken ct);
}
public partial class MyContext : IMyContext {}
У меня также есть единица работы и общего хранилища. Эти классы находятся в другой separater сборки под названием «ДАЛ»
public interface IUnitOfWork<TContext> : IDisposable where TContext : IMyContext
{
int Commit();
Task<int> CommitAsync(CancellationToken ct);
}
public interface IRepository<T> where T : class {}
public abstract class Repository<TContext, T> : IRepository<T> where TContext : IMyContext where T : class, IEntity
И, наконец, у меня есть свои услуги, которые находятся в еще один узел под названием «Услуги».
public class LoginService : BaseService, ILoginService
{
public LoginService(ILogService logService,
IUnitOfWork<IMyContext> unitOfWork)
: base(logService, unitOfWork)
{ }
}
нужно регистрироваться IMyContext с Autofac:
builder.RegisterType(typeof(MyContext))
.As(typeof(IMyContext))
.InstancePerRequest();
Но если я вышеупомянутую регистрацию, я получаю сообщение об ошибке, что DbContext не известно. Это связано с тем, что у меня нет (и не хочу/нужна) ссылка на Entity Framework в моем проекте WebApi
Могу ли я зарегистрировать вышеуказанный интерфейс, не требуя ссылки на EF? Каковы альтернативы?
Связанный: https://stackoverflow.com/questions/9501604/ioc-di-why-do-i-have-to-reference-all-layers-assemblies-in-entry-application – Steven