Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
C# 使用EF建模数据库,在数据库中具有循环_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 使用EF建模数据库,在数据库中具有循环

C# 使用EF建模数据库,在数据库中具有循环,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我的数据库建模有问题。 我正在mvc.net上使用EF6 我有三张桌子项目,人员,任务。 每个人都有一个任务和一个项目 这些是我的课程: public class Project { public int Id { get; set; } public string Name { get; set; } public virtual ICollection<Person> Persons { get; set; } } public class Person

我的数据库建模有问题。 我正在mvc.net上使用EF6

我有三张桌子<代码>项目,
人员
任务
。 每个
都有一个
任务
和一个
项目

这些是我的课程:

public class Project
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Person> Persons { get; set; }
}

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }

    public int ProjectId { get; set; }
    public virtual Project Project { get; set; }

    public virtual ICollection<TestTask> Tasks  { get; set; }

}

public class TestTask
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Content { get; set; }

    public int PersonId { get; set; }
    public virtual Person Person { get; set; }  
}
公共类项目
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection人员{get;set;}
}
公共阶层人士
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共int ProjectId{get;set;}
公共虚拟项目{get;set;}
公共虚拟ICollection任务{get;set;}
}
公共类测试任务
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串内容{get;set;}
公共int PersonId{get;set;}
公共虚拟人{get;set;}
}
当我决定每个项目都需要自己的任务时,问题就开始了。反过来说,我希望每个任务都有一个projectId,这样我就可以获得项目的所有任务(有或没有相关
人员的任务)

若我在项目中添加任务列表,在任务中添加projectId,那个么实体框架就会出错。如果我在任务类中只有一个projectd(在project中没有任何导航属性),那么ef不会使用这个字段

我对以下方法感兴趣:

  • GetTasksForProject(int-id)
    -这将获取项目id并返回与此项目相关的所有任务,无论是与没有人员的项目相关的任务,还是通过在此项目中工作的人员与项目相关的任务
  • GetTasksOnlyForProject
    -这将返回与项目相关但与此项目中任何人员无关的任务
  • GetTasksForPerson
    -这将返回与给定人员相关的任务
  • 你有什么建议?我对EF和MVC.net相当陌生,但不熟悉编程和sql。首先创建数据库可能会更容易(目前),但我想学习代码优先的方法


    提前感谢,

    一个很好的学习方法是先创建数据库,然后对其进行“反向工程”:然后您可以查看生成的代码,看看它如何与您创建的数据库保持一致,并开始在“代码优先”模型中进行任何新的更改。@DrewJordan这是一个好主意,我会这样看,谢谢!