0

我正在尝试使用实体框架来构建数据库,我需要一些模型帮助:

模型是:公司、部门、用户、TaskType1、TaskType2、TaskType3

public class Company
{
    public Company()
    {
         this.Departments = new HashSet<Department>();
    }
    public int Id { get; set;}
    public string CompanyName { get; set;}
    public string Address { get; set;}
    public string Phone { get; set;}

    public virtual ICollection<Department> Departments { get; set;}

}

public class Department
{
    public Department()
    {
        this.Users = new HashSet<User>();
    }
    public int Id { get; set;}
    public string Name { get; set;}

    public virtual Company Company { get; set;}
    public virtual ICollection<User> Users { get; set;}
}

public class User
{
    public Company()
    {

    }
    public int Id { get; set;}
    public string UserName { get; set;}
    public string FullName { get; set;}

    public virtual Department Department { get; set;}               
}


public class TaskType1
{
    public TaskType1()
    {

    }
    public int Id { get; set;}
    public string Name { get; set;}
    public string Description { get; set;}
    public int Priority { get; set;}        
}

public class TaskType2
{
    public TaskType2()
    {

    }
    public int Id { get; set;}
    public string Name { get; set;}
    public string Description { get; set;}
    public int Priority { get; set;}    
    public double EstimatedCosts { get; set;}
}

public class TaskType3
{
    public TaskType3()
    {

    }
    public int Id { get; set;}
    public string Name { get; set;}
    public string Description { get; set;}
    public int Priority { get; set;}    
    public bool IsDone { get; set;}     
}

我需要将 TaskType1、TaskType2、TaskType3 作为表的原因是因为任务类型不同(需要不同的数据/字段)。

如何将我的任务类型连接到公司、部门和用户,以便获得如下结果:

  • 每个公司 X 的所有任务
  • 从公司 x 分配给部门 z 的所有任务
  • 公司 x 部门 z 分配给用户 w 的所有任务

PS任务类型有共同的和不同的列

4

1 回答 1

0

您需要在模型之间建立关系。例如,要获取每个公司 X 的所有任务,您需要在每个 Tasks 表中都有一个 companyID 列,并将其作为 Company 表的外键。然后您可以在 Company 模型中设置导航属性:

public virtual ICollection<TaskType1> TasksType1 { get; set; }

您在这里使用 ICollection 是因为一个公司可以有多个任务......如果每个公司只能有一个任务,您可以执行以下操作:

public virtual TaskType1 TaskType1 { get; set; }

这使您可以像这样访问任务:

companies = db.Companies.Include(i => i.TasksType1);

您是否查看过 Contoso 大学教程?它很好地介绍了建立分层模型和相关关系。

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

(这个是MVC版本,如果你有兴趣,也有教程的WebForms版本)

于 2013-09-26T18:52:58.147 回答