Я только что создал новое основное приложение MVC с удостоверением. Я не могу, хоть убей, понять, как заставить структуру сущностей выполнять запрос к базе данных.
У меня есть ApplicationDBContext
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
всякий раз, когда я пытаюсь его использовать, он просто говорит мне, что мне не отправлены варианты.
Я пытаюсь выполнить запрос в своей таблице UserAddresses и изменил свою таблицу ASPNetUsers на «Пользователи».
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
// Update the ApplicationUser Table to Users and change primary column to UserId
builder.Entity<ApplicationUser>(entity =>
{
entity.ToTable("Users");
entity.Property(e => e.Id).HasColumnName("UserId");
});
}
public DbSet<UserAddress> UserAddresses { get; set; }
Это весь класс
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
// Update the ApplicationUser Table to Users and change primary column to UserId
builder.Entity<ApplicationUser>(entity =>
{
entity.ToTable("Users");
entity.Property(e => e.Id).HasColumnName("UserId");
});
}
public DbSet<UserAddress> UserAddresses { get; set; }
}
Как подключиться к DBContext для выполнения запросов с использованием EF
Обновлять
Мне удалось получить его, передав мой _context в контроллер через такой конструктор
private ApplicationDbContext _context;
public HomeController(ApplicationDbContext context)
{
_context = context;
}
Какой запрос вы хотели выполнить? Поделитесь с нами связанным кодом, и где вы получили эту ошибку. Я только конфигурацию вижу, но не нашел, как вы называете _context .





using (var context = new ApplicationDbContext())
{
var user = await context.UserAddresses.SingleAsync(x => x.Id == UserId);
return user;
}
добавить пустой конструктор:
public ApplicationDbContext() {}
InvalidOperationException: для этого DbContext не настроен поставщик базы данных. Поставщика можно настроить, переопределив метод DbContext.OnConfiguring или используя AddDbContext в поставщике службы приложения. Если используется AddDbContext, также убедитесь, что ваш тип DbContext принимает объект DbContextOptions <TContext> в своем конструкторе и передает его в базовый конструктор для DbContext.
Это в моих сервисах настройки services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
Можете выложить свои Startup.cs и Program.cs?
private ApplicationDbContext _context;
public HomeController(ApplicationDbContext context)
{
_context = context;
}
// this will get the userId of currently loggedIn user
userId = User.Identity.GetUserId()
// this line get all the address of loggedIn user from UserAddresses table
_context.UserAddresses.Where(a => a.UserId == userId).ToList();
Вы также получаете единый адрес, первый или последний адрес и т. д.
Configuration in Startup.cs
services.AddIdentity<ApplicationUser>()
.AddEntityFrameworkStores<AppIdentityDbContext>()
.AddDefaultTokenProviders();
Что произойдет, если вы поменяете орудие с
IdentityDbContext<ApplicationUser>на простоDbContext?