Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在.NETC#EF中通过使用外键和创建表之间关系的种子方法填充数据库?_C#_Entity Framework_Data Binding - Fatal编程技术网

如何在.NETC#EF中通过使用外键和创建表之间关系的种子方法填充数据库?

如何在.NETC#EF中通过使用外键和创建表之间关系的种子方法填充数据库?,c#,entity-framework,data-binding,C#,Entity Framework,Data Binding,我的种子方法包含以下内容: var professors = new List<Professor> { new Professor { Name = "Arturo Anand", EnrollmentDate = DateTime.Parse("09-08-2015") } };

我的种子方法包含以下内容:

        var professors = new List<Professor>
        {
            new Professor
            {
                Name = "Arturo Anand",
                EnrollmentDate = DateTime.Parse("09-08-2015")
            }
        };

        professors.ForEach(prof => context.Professors.AddOrUpdate(prof));
        context.SaveChanges();

        var presentations = new List<Presentation>
        {
            new Presentation
            {
                PresentationTitle = "Test",
                PresentationTime = DateTime.Parse("09-09-2015"),
                Level = Level.Advanced,
            }
        };

        presentations.ForEach(pres => context.Presentations.AddOrUpdate(pres));
        context.SaveChanges();
教授班:

  public class Professor
{
    public int ProfessorId { get; set; }
    public string Name { get; set; }
    public DateTime EnrollmentDate { get; set; }
    public virtual ICollection<Presentation> Presentations { get; set; }
}
公共课教授
{
公共int教授ID{get;set;}
公共字符串名称{get;set;}
公共日期时间注册日期{get;set;}
公共虚拟ICollection演示文稿{get;set;}
}
我真的不知道应该如何从seed方法填充db,以便将两个表中的数据绑定到一个表单,从而在它们上创建CRUD操作

编辑: 教授模型:

    public class Professor
{
    public int ProfessorId { get; set; }
    public string Name { get; set; }
    public DateTime EnrollmentDate { get; set; }
    public virtual ICollection<Presentation> Presentations { get; set; }
}
公共课教授
{
公共int教授ID{get;set;}
公共字符串名称{get;set;}
公共日期时间注册日期{get;set;}
公共虚拟ICollection演示文稿{get;set;}
}

由于
教授
演示
之间存在关系,您可以直接将演示分配给教授对象,EF将为您填充FK。试试这个

protected override void Seed(yourDbContext context)
{

       var professors = new List<Professor>
       {
         new Professor
         {
            Id = 1,
            Name = "Arturo Anand",
            EnrollmentDate = DateTime.Parse("09-08-2015"),
            Presentations = new List<Presentation>
              {
                 new Presentation
                 {
                 PresentationTitle = "Test",
                 PresentationTime = DateTime.Parse("09-09-2015"),
                 Level = Level.Advanced,
                 }
              }
         }
     };
  //make sure to specify a key for the AddOrUpdate Method to ensure 
  //that you don’t create duplicates when you seed data during development.
   professors.ForEach(prof => context.Professors.AddOrUpdate(x => x.Id, prof));
}
protected override void Seed(yourDbContext上下文)
{
var=新列表
{
新教授
{
Id=1,
Name=“Arturo Anand”,
EnrollmentDate=DateTime.Parse(“09-08-2015”),
演示文稿=新列表
{
新演示文稿
{
PresentationTitle=“测试”,
PresentationTime=DateTime.Parse(“09-09-2015”),
级别=级别。高级,
}
}
}
};
//确保为AddOrUpdate方法指定一个键以确保
//在开发期间为数据设定种子时不会创建重复项。
professors.ForEach(prof=>context.professors.AddOrUpdate(x=>x.Id,prof));
}

您也不需要调用
SaveChanges
。运行命令
updatedatabase
将执行seed方法。

是否收到错误?级别是多少?该代码是否编译?我正在尝试运行您的代码,但不包括foreach和save,我会出错。。还有,为什么您很难绑定课堂教授和演示文稿列表中的数据?级别只是一个枚举,我关心的是,如果我用数据填充表格,演示文稿表将不绑定任何professor id。如果这是一个愚蠢的问题,很抱歉..我在这方面是新手,没有找到任何关于通过基于外键的种子方法填充表的内容。它抱怨我的professor模型不包含演示文稿。它应该是演示文稿,因为它是您的属性名称,检查我的答案,我编辑了一行。嗨@ USSR930858如果这个或任何答案已经解决了你的问题,请考虑通过点击复选标记接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。不完全是这样。目前只有教授表充满了数据,我正在尝试解决这个问题,然后我会在这里发布答案并接受你的答案。您发布的代码似乎很好,我想问题出在我这边。在再次重建和更新数据库后,数据库中填充了数据。再次感谢!
protected override void Seed(yourDbContext context)
{

       var professors = new List<Professor>
       {
         new Professor
         {
            Id = 1,
            Name = "Arturo Anand",
            EnrollmentDate = DateTime.Parse("09-08-2015"),
            Presentations = new List<Presentation>
              {
                 new Presentation
                 {
                 PresentationTitle = "Test",
                 PresentationTime = DateTime.Parse("09-09-2015"),
                 Level = Level.Advanced,
                 }
              }
         }
     };
  //make sure to specify a key for the AddOrUpdate Method to ensure 
  //that you don’t create duplicates when you seed data during development.
   professors.ForEach(prof => context.Professors.AddOrUpdate(x => x.Id, prof));
}