Посев стола с внешним ключом - PullRequest
0 голосов
/ 27 апреля 2020

Я столкнулся с проблемой, когда не могу заполнить сценарий SQL, так как он имеет ограничение внешнего ключа, я попытался context.SaveChanges (), но он не работает. Есть ли способ, как это можно сделать?

protected override void Seed(ApplicationDbContext context)
{
    List<Type> types = new List<Type>();
    types.Add(new Type() { Type = "Fair" });
    types.Add(new Type() { Type = "Great" });

    context.Type.AddRange(types);

    context.SaveChanges();

    var baseDir = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin", string.Empty) + "\\Paths";

    context.Database.ExecuteSqlCommand(File.ReadAllText(baseDir + "\\Types.sql"));
    context.Database.ExecuteSqlCommand(File.ReadAllText(baseDir + "\\Category.sql"));

    base.Seed(context);
}

Модель:

public class Type
{
   [Key]
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public int Id { get; set; }

   public string Title { get; set; }
}

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

Ваш класс Type не имеет свойства с именем Type. Вы должны изменить свойство Type на Title

List<Type> types = new List<Type>();

types.Add(new Type() { Title = "Fair" });//NOTE THIS
types.Add(new Type() { Title = "Great" });//NOTE THIS

context.Type.AddRange(types);
context.SaveChanges();

, а затем удалить base.Seed(context);

0 голосов
/ 27 апреля 2020

Вопрос был решен, проблема была в том, что сгенерированные данные не всегда были одинаковыми, поэтому был сделан твик для ВСТАВКИ одинаковых данных (Id) всегда одинаковых

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