EFCore - Начальные данные, только если они не существуют в другой таблице - PullRequest
0 голосов
/ 17 марта 2020

Я хочу заполнить некоторые данные, используя EntityFramework. net core 3.1, и я столкнулся с проблемой:

У меня есть две SQL таблицы (так, две DbSet <>):

public virtual DbSet<TableA> TableA { get; set; }
public virtual DbSet<TableB> TableB { get; set; }

Таблица A имеет такую ​​структуру:

[Key] 
public int Id { get; set; } // PK
public string EnglishText { get; set; } // some value

Таблица B имеет такую ​​структуру:

[Key]
public int Id { get; set; } // PK
public int TableAId { get; set; } // FK to Table A
public string TranslatedText { get; set; } // some value

Для заполнения данных для таблицы A я использую OnModelCreating (ModelBuilder modelBuilder) метод в DBContext:

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // Seed TableA
        modelBuilder.Entity<TableA>().HasData(
            new TableA { Id = 1, EnglishText = "first data"}
        );
    }

Затем я хочу заполнить таблицу B, только если она не содержит запись, которая ссылается на TableA (через FK), я не уверен, как сделайте это в методе OnModelCreating.

Я думаю, что мне нужно что-то вроде:

modelBuilder.Entity<TableB>().HasData(var X = new TableB{...}).Where([X.TableAId is not in TableA])

Если у кого-то есть идея или она может указать мне направление, это было бы очень признательно .

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