EF Core недоразумение - PullRequest
       6

EF Core недоразумение

0 голосов
/ 25 апреля 2019

Я довольно новичок в 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.

Даже если в моем случае я не хочусоздать рецепт, но я создаю только еду, указывающую на существующий рецепт.

Я думаю, что я создаю модель неправильно.

Не могли бы вы помочь мне понять, что это такое?что?

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