我对Entity Framework还是很陌生,对于如何首先定义事物代码我感到很困惑。
我只想在代码中定义这种简单的关系:我有一个实体餐,代表我今天要吃的东西。
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时,表“食谱”。
即使在我的情况下,我也不想创建食谱,但我只是在创建一顿指向现有食谱的膳食。
我认为我以错误的方式创建了模型。
您能帮助我理解什么吗?