У меня есть класс UserFactory, где я хочу проверить, существует ли пользователь в базе данных, если он не будет создан автоматически. Но с трудностями с доступом к DbContext извне контроллера.Как получить доступ к DbContext извне контроллера?
public UserFactory(DbContextOptionsBuilder builder)
{
_dbContext = new PMSContext(builder.Options) ;
}
public User Create(WindowsIdentity currentWindowsUser)
{
User user = new User();
string name = currentWindowsUser.Name.Replace("DOMAIN\\", "");
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal ADuser = UserPrincipal.FindByIdentity(ctx, name);
if(ADuser != null)
{
User userInDatabase = _dbContext.Users.Where(u => u.SamAccountName == name).FirstOrDefault();
}
}
И чем в Startup.cs I Habe:
public Startup(IHostingEnvironment env)
{
var builder = new DbContextOptionsBuilder<PMSContext>()
.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
User user = new UserFactory(builder).Create(WindowsIdentity.GetCurrent());
}
Но я получаю сообщение об ошибке:
Severity Code Description Project File Line Error CS1503 Argument 1: cannot convert from 'Microsoft.Data.Entity.Infrastructure.SqlServerDbContextOptionsBuilder' to 'Microsoft.Data.Entity.DbContextOptionsBuilder'
Является ли это правильный путь, чтобы получить доступ DbContext с внешней стороны Контроллер?
Это может быть, что вы ссылаетесь 2 различных DLLs EF (т.е. один с .Net Framework и один с новым EF). – bubi
Это похоже на опорную ошибку:/ –
Оба класса используют Microsoft.Data.Entity – Whistler