C# EF CF中的种子设定和保存数组
我的ASP.NET MVC项目中有两个模型。当设定种子以包含测试数据时,我会执行以下操作:C# EF CF中的种子设定和保存数组,c#,.net,entity-framework,ef-code-first,C#,.net,Entity Framework,Ef Code First,我的ASP.NET MVC项目中有两个模型。当设定种子以包含测试数据时,我会执行以下操作: context.Dialogs.Add(new Dialog { Id = 1, Chapter = 1, Index = 0, DialogColor = "default-color", DialogText = "blah blah!", Character = "none", Transition = false, Fade = tr
context.Dialogs.Add(new Dialog
{
Id = 1,
Chapter = 1,
Index = 0,
DialogColor = "default-color",
DialogText = "blah blah!",
Character = "none",
Transition = false,
Fade = true,
Timer = 0,
Actions = new List<Action>
{
new Action { ActionText = "--continue--", ActionLink = 1, Id=1 }
}
});
您需要更新您的模型以使用ICollection,这样实体框架将进行适当的关联。由此: 实体框架不支持以下集合属性: 使用Add和Remove方法显示为IEnumerable 在对话框类中,将属性更新为:
public virtual ICollection<Action> Actions { get; set; }
公共虚拟ICollection方法将在实体添加到上下文后返回该实体。您需要更新模型以使用ICollection,以便实体框架进行适当的关联。由此:
实体框架不支持以下集合属性:
使用Add和Remove方法显示为IEnumerable
在对话框类中,将属性更新为:
public virtual ICollection<Action> Actions { get; set; }
public virtual ICollection方法将在实体添加到上下文后返回该实体。尝试以下操作:不要为种子设定时添加的任何实体设置Id
。您可能不需要手动设置Id。在大多数情况下(如果您不使用特定的id生成逻辑),它应该由EF\SQL自动分配。我在将id放入之前进行了测试。请注意:不要为您在种子设定时添加的任何实体设置id
。您可能不需要手动设置id。在大多数情况下(如果您不使用特定的id生成逻辑),它应该由EF\SQL自动分配。我在将id放入inNope之前进行了测试,但似乎仍然无法保存它,我只能认为保存方法是错误的。扩展我的答案,添加其他解决方案似乎仍然无法保存它,我只能认为save方法是错误的,因为它扩展了我的答案,添加了其他解决方案
public virtual ICollection<Action> Actions { get; set; }
protected override void OnModelCreating( DbModelBuilder modelBuilder )
{
modelBuilder.Entity<Dialog>()
.HasMany(d => d.Actions)
.WithOptional(a => a.Dialog);
}
context.Dialogs.Add( new Dialog
{
Id = 1,
Chapter = 1,
Index = 0,
DialogColor = "default-color",
DialogText = "blah blah!",
Character = "none",
Transition = false,
Fade = true,
Timer = 0,
Actions = new List<Action>
{
context.Actions.Add(new Action()
{
ActionText = "--continue--",
ActionLink = 1, Id=1
})
}
} );