Я жонглирую отношениями «один ко многим» с использованием Entity Framework:
Мне нужно вставить группу данных из C# объектов в мою SQL Серверную базу данных, поэтому я использую Entity Framework с подходом Code First.
В моем примере у меня есть продукт, который имеет одну категорию, но категории могут явно принадлежать нескольким продуктам.
Мой класс Product выглядит следующим образом.
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
Я пробовал несколько решений для своего класса Category, как с строкой с комментариями, так и без нее, но здесь мы go:
public class Category
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CategoryId { get; set; }
public string CategoryName { get; set; }
// public ICollection<Product> Products { get; set; }
}
При вставке нескольких продуктов с одинаковыми категория, я получаю нарушение ограничения первичного ключа - что я понимаю, почему происходит, но я думаю, что Entity Framework позаботится о!
У меня есть длинный список индексов, которые я использую, чтобы получить XML - файл (на основе этого индекса) из API. Затем я создаю объект на основе этого XML файла. Метод называется GetProductFrom XML:
Foreach(int index in listOfIndexes){
Product product = GetProductFromXML(index);
productContext.Products.Add(product);
}
Context.SaveChanges();
Когда я получаю продукт, где категория уже существует, я получаю нарушение исключения первичного ключа из моей таблицы категорий.
Очевидно, что EF понимает, что второй объект должен использовать категорию из первого объекта.
Что мне делать? Я нахожу это таким простым действием, которое было бы легко сделать с помощью обычных запросов, но с Entity Framework я оборачиваюсь вокруг него, и я схожу с ума!
Надеюсь, кто-то даст мне логи c ответ!