Я довольно новичок в Entity Framework, поэтому я, вероятно, пропускаю что-то простое здесь.
В моем классе контроллера я добавляю новый объект Category в базу данных, затем я использую этот объект в качествесобственность на объекте курса.Когда я сохраняю сущность курса, категория сохраняется снова в базе данных снова, и я надеялся, что новый курс будет ссылаться на уже вставленную категорию.
(упрощенный) код контроллера, который сохраняет первую категорию:
// Create and save the category
Category category = new Category {Name = "Test category"};
category = context.Categories.Add(category);
context.SaveChanges(); // The category object now has a CategoryId (the pk of the record)
// Create and save the course
Course course = new Course {
FullDescription = "This is a new course",
Name = "My new course",
Category = category // Hoping this will have EF make a link to the just inserted category
};
context.Courses.Add(course);
context.SaveChanges(); // Saves the Course AND creates a **new** Category in the db
Кажется, проблема в том, что я вызываю saveChanges () дважды.Что работает, так это удаление первого вызова context.saveChanges (), НО, это не мой настоящий код.В моем приложении я использую шаблон репозитория, а добавление категории осуществляется путем вызова categoryRepository.AddCategory (Category category).И сохранение курса выполняется точно таким же образом, вызывая courseRepo.AddCourse (курс курса), который также содержит вызов saveChanges ().
public Category AddCategory(Category category)
{
category = context.Categories.Add(category);
context.SaveChanges();
return category;
}
Я не хочу удалять вызовыsaveChanges () в AddCourse () и AddCategory (), потому что я хочу, чтобы это были атомарные операции.
Я надеялся, что возвращение категории и последующее использование категории в качестве свойства нового курса свяжет этот курс с категорией, но, очевидно, это не так.Как связать мой курс с категорией, которая уже присутствует в базе данных?