У меня вопрос о создании новой таблицы в приложении ASP.NET Core MVC. Я создал его с помощью «Индивидуальных учетных записей пользователей», поэтому у меня есть таблицы идентификаторов в БД.
Как я могу создавать свои собственные таблицы в этой БД? Должен ли я создать новый контекст БД?
Например: я хочу создать таблицы для студентов и вопросов (и их ответов).
@Nikolaus Хорошо, не могли бы вы мне помочь? Где в ApplicationDbContext.cs мне добавить новый контекст? Буду очень признателен за любые ссылки по этому поводу.
@ Алексей, вам может понадобиться следовать этому руководству: docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/…
Что касается комментариев / ответов других, где именно ваша проблема, вам нужно определить классы, используемые в вашем DbContext, ... Что у вас есть (код)?





Создавайте свои модели:
Предположим, у вас есть следующая модель:
public class Post{
public int Id {get; set;}
public string Name {get; set;}
}
в корневом каталоге создайте папку с именем Persistence (или вы можете называть ее как хотите)
Внутри папки сохраняемости добавьте такой класс
public class MyDbContext : DbContext {
public DbSet<Post> Posts {get; set;}
public MyDbContext((DbContextOptions<MyDbContext> options)
: base (options)
{
}
}
Теперь в Startup.cs добавьте эту строку к функции ConfigureServices:
services.AddDbContext<MyDbContext>(options => options.UseSqlServer("connStr"));
Теперь пришло время создать вашу первую миграцию с помощью dotnet cli.
dotnet ef migrations add AddPostsTable --context MyDbContext
Найти больше на: документы здесь
Поскольку вы уже сказали, что использовали шаблон идентификатора Individual User Accounts, вы можете просто добавить в него свои собственные модели, например:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
//....
}
public DbSet<Student> Students{ get; set; }
public DbSet<Question> Questions { get; set; }
public DbSet<Answer> Answers { get; set; }
//....
}
Чтобы добавить / запустить миграции после новых изменений - В меню «Инструменты» найдите Package Console Manager в разделе Nuget Console Manager. Выберите проект с вашим ApplicationDbContext и запустите команды, как показано на снимке экрана.
Итак, я добавил эти классы и их DbSet. Я обновляю базу данных, и все вроде нормально. Где я могу найти созданные таблицы? В SQL Server Obj.Manager у меня есть только таблицы идентификации.
Вы создавали / запускали миграции?
Нет, не могли бы вы рассказать об этом?
Вау, m8, спасибо за внимание и время. Вы сэкономили мне огромное количество времени. P.S. Я пробовал использовать команду «Добавить миграцию» без символа «-», поэтому она не работает.
@FelixToo Я пытаюсь перейти с ef6 на efcore, но, похоже, для меня отключение ... есть ли какие-либо статьи / ссылки gd, где можно настроить организованный свободный код построителя, а что нет ... код ef6 сначала казался лучше в этом внимание. Спрашивая, когда я получаю вышеуказанное, и надеюсь, что вы потратили на это больше времени, чем на меня, так что, возможно, вы можете показать / сказать мне, что работает ..
Используйте другой DbContext для своих таблиц / классов.