Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Entity framework 如何通过模型和初始值设定项关联表_Entity Framework_Ef Code First - Fatal编程技术网

Entity framework 如何通过模型和初始值设定项关联表

Entity framework 如何通过模型和初始值设定项关联表,entity-framework,ef-code-first,Entity Framework,Ef Code First,我希望能更好地理解如何将模型相互关联。我还在实体框架中使用种子数据。但是我认为它设置不正确,我不知道在哪里。当我尝试为公司运行索引时,我在关注公司列表时遇到了一个不太有用的错误。我是不是做错了什么?我现在迷路了 我的数据库设计很简单,从上到下都很简单——管理、公司、活动、创意 以下四个类保存为“我的模型”文件夹中的单个类 public class Admin { public int AdminID { get; set; } public string FirstName {

我希望能更好地理解如何将模型相互关联。我还在实体框架中使用种子数据。但是我认为它设置不正确,我不知道在哪里。当我尝试为公司运行索引时,我在关注公司列表时遇到了一个不太有用的错误。我是不是做错了什么?我现在迷路了

我的数据库设计很简单,从上到下都很简单——管理、公司、活动、创意

以下四个类保存为“我的模型”文件夹中的单个类

public class Admin
{

    public int AdminID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }


    public virtual ICollection<Company> Companys { get; set; }
    public virtual ICollection<Campaign> Campaigns { get; set; }
    public virtual ICollection<Idea> Ideas { get; set; }
}

public class Company
{

    public int CompanyID { get; set; }
    public int AdminID { get; set; }
    public string CompanyName { get; set; }
    public string Website { get; set; }
    public string Description { get; set; }

    public virtual ICollection<Campaign> Campaigns { get; set; }
    public virtual ICollection<Idea> Ideas { get; set; }
}

public class Campaign
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CampaignID { get; set; }
    public int CompanyID { get; set; }
    public int AdminID { get; set; }
    public string Description { get; set; }

    public virtual Idea Idea { get; set; }
    public virtual Company Company { get; set; }
}
然后是我的种子数据

    protected override void Seed(CeptContext context)
    {

        var admins = new List<Admin>
        {
        new Admin{AdminID=1, FirstName="Bob",LastName="Test"},
        new Admin{AdminID=2, FirstName="Fred",LastName="Tester"},

        };

        admins.ForEach(s => context.Admins.Add(s));
        context.SaveChanges();

        var companys = new List<Company>
        {
        new Company{AdminID=1, CompanyID=101, CompanyName="Test Company",Website="www.testcompany.com",Description="Test Company"},
        new Company{AdminID=1, CompanyID=102, CompanyName="Big Company",Website="www.bigcompany.com",Description="big company"},
        new Company{AdminID=2, CompanyID=103, CompanyName="Big Technologies",Website="www.bigtechnologies.com",Description="Big technologies"},

        };

        companys.ForEach(s => context.Companys.Add(s));
        context.SaveChanges();

        var campaigns = new List<Campaign>
        {
        new Campaign{AdminID=1, CompanyID=101, CampaignID=201, Description="New campaign"},
        new Campaign{AdminID=1, CompanyID=101, CampaignID=202, Description="New campaign2"},
        new Campaign{AdminID=1, CompanyID=102, CampaignID=203, Description="New campaign3"},
        new Campaign{AdminID=2, CompanyID=103, CampaignID=204, Description="New campaign4"},

        };

        campaigns.ForEach(s => context.Campaigns.Add(s));
        context.SaveChanges();

        var ideas = new List<Idea>
        {
        new Idea{AdminID=1,CompanyID=101, CampaignID=201, IdeaID=301, Description="Big Idea", Rank=Rank.A},
        new Idea{AdminID=1,CompanyID=101, CampaignID=202, IdeaID=302, Description="Tiny Idea", Rank=Rank.B},
        new Idea{AdminID=1,CompanyID=102, CampaignID=203, IdeaID=303, Description="Idea to do great things", Rank=Rank.C},
        new Idea{AdminID=1,CompanyID=102, CampaignID=203, IdeaID=304, Description="Even bigger things", Rank=Rank.B},
        new Idea{AdminID=2,CompanyID=103, CampaignID=204, IdeaID=305, Description="Bad idea", Rank=Rank.C},
        new Idea{AdminID=2,CompanyID=103, CampaignID=204, IdeaID=306, Description="Other Idea", Rank=Rank.A},

        };
        ideas.ForEach(s => context.Ideas.Add(s));
        context.SaveChanges();


    }

问题是什么?这些表是否正确相关,种子数据是否符合此关系?您不应该在层次结构中重复这些关键字段。感谢Gert,我觉得我在那里做错了什么,但我不确定如何关联它们,或者如何在种子数据中关联它们。
    protected override void Seed(CeptContext context)
    {

        var admins = new List<Admin>
        {
        new Admin{AdminID=1, FirstName="Bob",LastName="Test"},
        new Admin{AdminID=2, FirstName="Fred",LastName="Tester"},

        };

        admins.ForEach(s => context.Admins.Add(s));
        context.SaveChanges();

        var companys = new List<Company>
        {
        new Company{AdminID=1, CompanyID=101, CompanyName="Test Company",Website="www.testcompany.com",Description="Test Company"},
        new Company{AdminID=1, CompanyID=102, CompanyName="Big Company",Website="www.bigcompany.com",Description="big company"},
        new Company{AdminID=2, CompanyID=103, CompanyName="Big Technologies",Website="www.bigtechnologies.com",Description="Big technologies"},

        };

        companys.ForEach(s => context.Companys.Add(s));
        context.SaveChanges();

        var campaigns = new List<Campaign>
        {
        new Campaign{AdminID=1, CompanyID=101, CampaignID=201, Description="New campaign"},
        new Campaign{AdminID=1, CompanyID=101, CampaignID=202, Description="New campaign2"},
        new Campaign{AdminID=1, CompanyID=102, CampaignID=203, Description="New campaign3"},
        new Campaign{AdminID=2, CompanyID=103, CampaignID=204, Description="New campaign4"},

        };

        campaigns.ForEach(s => context.Campaigns.Add(s));
        context.SaveChanges();

        var ideas = new List<Idea>
        {
        new Idea{AdminID=1,CompanyID=101, CampaignID=201, IdeaID=301, Description="Big Idea", Rank=Rank.A},
        new Idea{AdminID=1,CompanyID=101, CampaignID=202, IdeaID=302, Description="Tiny Idea", Rank=Rank.B},
        new Idea{AdminID=1,CompanyID=102, CampaignID=203, IdeaID=303, Description="Idea to do great things", Rank=Rank.C},
        new Idea{AdminID=1,CompanyID=102, CampaignID=203, IdeaID=304, Description="Even bigger things", Rank=Rank.B},
        new Idea{AdminID=2,CompanyID=103, CampaignID=204, IdeaID=305, Description="Bad idea", Rank=Rank.C},
        new Idea{AdminID=2,CompanyID=103, CampaignID=204, IdeaID=306, Description="Other Idea", Rank=Rank.A},

        };
        ideas.ForEach(s => context.Ideas.Add(s));
        context.SaveChanges();


    }