Я довольно новичок в Entity Framework, и меня очень смущает, как сначала определять код вещей.
Я бы просто определил в коде это простое отношение: у меня есть Entity Meal, которыйпредставляет то, что я собираюсь съесть сегодня.
public class Meal
{
public int MealId { get; set; }
public DayOfWeek DayOfWeek { get; set; }
public Recipe Recipe { get; set; }
public int RecipeId { get; set; }
public WeeklySchedule WeeklySchedule { get; set; }
}
Классический рецепт, который вы видите, представляет собой рецепт, который я собираюсь использовать для приготовления этой еды.Так что отношения один ко многим.Многие блюда могут использовать один и тот же рецепт, но любой прием пищи имеет только один рецепт
Рецепт класса:
public class Recipe
{
public int RecipeId { get; set; }
public string Name { get; set; }
public ICollection<RecipeItem> RecipeItems { get; set; }
}
И еженедельное расписание:
public class WeeklySchedule
{
public int WeeklyScheduleId { get; set; }
public int WeekNumber { get; set; }
public List<Meal> Meals { get; set; }
public WeeklySchedule() { }
public WeeklySchedule(int weeknumber)
{
WeekNumber = weeknumber;
Meals = new List<Meal>();
}
}
Когда ясоздайте определяемую мной модель:
modelBuilder.Entity<Recipe>().HasMany(c => c.RecipeItems).WithOne(c => c.Recipe).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<RecipeItem>().HasMany(c => c.RecipeItemComponents).WithOne(c => c.RecipeItem).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<WeeklySchedule>().HasMany(c => c.Meals).WithOne(c => c.WeeklySchedule).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Meal>().HasOne(c => c.Recipe);
Я использую этот код для его хранения:
_context.WeeklySchedules.Add(weeklySchedule);
await _context.SaveChangesAsync();
Моя проблема в том, что при попытке сохранить новую еду я получаю сообщение об ошибке:
SqlException: Невозможно вставить явное значение для столбца идентификаторов в таблице «Рецепты», если для параметра IDENTITY_INSERT установлено значение OFF.
Даже если в моем случае я не хочусоздать рецепт, но я создаю только еду, указывающую на существующий рецепт.
Я думаю, что я создаю модель неправильно.
Не могли бы вы помочь мне понять, что это такое?что?