@z_a_p_a_r_a

Как создать экземпляр контекста базы данных?

Доброго времени суток.
У меня следующая задача - проверить на уникальность поле модели при добавлении в БД.
Контекс:
public class InstituteContext : DbContext
    {
        public InstituteContext (DbContextOptions<InstituteContext> options)
            : base(options)
        {
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Department>().HasIndex(p => p.Name).IsUnique();
         
        }
        public DbSet<Institute.Models.Department> Department { get; set; }

    }

Для этого создаю атрибут валидации... но никак не могу создать экземпляр контекста что бы вытянуть оттуда все поля NAME.
Пробую вот так:
var db = new InstituteContext();
Но тогда требует аргумент, потому что в конструктор идет с аргументом... что передавать ему?
  • Вопрос задан
  • 345 просмотров
Решения вопроса 1
@kttotto
пофиг на чем писать
Передавать в конструктор надо экземпляр DbContextOptions.
Это можно делать либо руками, либо с помощью DI
док
В простом варианте руками это будет выглядеть так:
var timeout = 600;
var optionsBuilder = new DbContextOptionsBuilder<InstituteContext>()
	.UseSqlServer(new SqlConnection(connectionString), opt =>
	{
		opt.CommandTimeout(timeout);
	});
	
using (var context = new InstituteContext (optionsBuilder.Options))
{
  // your code
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы