Запрос к базе данных с EF Core в 2.1 - PullRequest
0 голосов
/ 11 октября 2018

Я только что создал новое базовое приложение MVC с индивидуальностью.Я не могу понять, как заставить сущностный каркас выполнять запрос к базе данных.

У меня есть ApplicationDBContext

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
    : base(options)
{
}

всякий раз, когда я пытаюсь его использовать, он просто говориту меня нет отправленных опций.

Я пытаюсь выполнить запрос к моей таблице UserAddresses и изменил мою таблицу ASPNetUsers на Users.

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;
    }

Ответы [ 2 ]

0 голосов
/ 13 октября 2018
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();

Вы также можете получить один адрес, первый адрес или последний адрес и т. Д.

Конфигурация в Startup.cs

services.AddIdentity<ApplicationUser>()
            .AddEntityFrameworkStores<AppIdentityDbContext>()
            .AddDefaultTokenProviders();
0 голосов
/ 11 октября 2018
using (var context = new ApplicationDbContext())
{
    var user = await context.UserAddresses.SingleAsync(x => x.Id == UserId);

    return user;
}

добавить пустой конструктор:

public ApplicationDbContext() {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...