我有Client,Project和Task的课程。
每个客户端包含多个项目。 每个项目包含多个任务。
在数据库中每个都有一个ID字段,项目表有一个clientid字段。 此外,Tasks表有一个projectid字段。
有人可以帮我解决这个问题吗?所以我可以让每个人都上课吗?
答案 0 :(得分:2)
这是:
public class Client
{
public int Id {get;set;}
// Client Properties
private List<Project> _projects = new List<Project>();
public List<Project> Projects { get { return _projects; } }
}
public class Project
{
public int Id { get; set; }
public int ClientId { get; set; }
// Project Properties
private List<Task> _tasks = new List<Task>();
public List<Task> Tasks { get { return _tasks; } }
}
public class Task
{
public int Id { get; set; }
public int ProjectId { get; set; }
// Task Properties
}
答案 1 :(得分:0)
您需要创建一个集合类型的属性,例如List<Project>
。
但是 - 有一个决定:任何外部类都可以直接从Projects集合属性中添加或删除项目,还是外部类只能读取集合?
如果任何其他类可以完全访问“项目”列表,则需要选择列表将显示为的外部类型。根据您希望其他类能够执行的操作,将IList<Project>
或ICollection<Project>
公开可能是个好主意。
如果其他类不可以自由访问该列表,您可能希望将其公开为IEnumerable<Project>
,以便他们所能做的就是遍历列表。此外,如果没有其他类可以直接访问,那么您将不得不向Client类添加方法以允许添加和/或删除项目。
通过仅允许基于接口的外部访问项目列表,您可以自由地将基础数据结构更改为另一个兼容的数据结构,而不会破坏任何其他代码。例如,如果属性是IEnumerable<Project>
,则可以将内部代码从List<Project>
更改为数组(Project[]
),而其他代码无需知道。