C# 使用EF建模数据库,在数据库中具有循环
我的数据库建模有问题。 我正在mvc.net上使用EF6 我有三张桌子<代码>项目,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
人员
,任务
。
每个人
都有一个任务
和一个项目
这些是我的课程:
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这是一个好主意,我会这样看,谢谢!