Asp.net mvc 5 MVC使用多个表,2个表先用代码生成,1个表先用DB生成
我是MVC的新手,我想以前有人回答过这个问题,所以我很抱歉重新发布了这个问题。 我已经做了很多年基于表单的程序员,现在我第一次在做一个MVC项目,在过去的三周里,我阅读了很多关于MVC的书籍、文章、教程,并观看了很多视频 我的问题是: -我有3个表:任务、客户和员工 每个任务有一名客户和一名员工分配给它。我从SQL DB上现有的表生成了Tasks表,但我首先按照代码创建employee表和Customer表。我不确定我是否在这些表之间建立了正确的关系。我想做的是显示所有任务+用户名+CustomerName,而不是UserID和CustomerID 以下是我的模型: 任务:Asp.net mvc 5 MVC使用多个表,2个表先用代码生成,1个表先用DB生成,asp.net-mvc-5,Asp.net Mvc 5,我是MVC的新手,我想以前有人回答过这个问题,所以我很抱歉重新发布了这个问题。 我已经做了很多年基于表单的程序员,现在我第一次在做一个MVC项目,在过去的三周里,我阅读了很多关于MVC的书籍、文章、教程,并观看了很多视频 我的问题是: -我有3个表:任务、客户和员工 每个任务有一名客户和一名员工分配给它。我从SQL DB上现有的表生成了Tasks表,但我首先按照代码创建employee表和Customer表。我不确定我是否在这些表之间建立了正确的关系。我想做的是显示所有任务+用户名+Custom
public partial class Tasks
{
public string TaskID { get; set; }
public string Name { get; set; }
public System.DateTime StartDate { get; set; }
public Nullable<System.DateTime> DueDate { get; set; }
public Nullable<int> Complete { get; set; }
public string Description { get; set; }
public Nullable<int> Priority { get; set; }
public string Status { get; set; }
public Nullable<System.DateTime> AssignementDate { get; set; }
public Nullable<System.DateTime> CreationDate { get; set; }
[ForeignKey ("Employee")]
public string EmployeeID { get; set; }
public virtual ApplicationUser _User { get; set; }
[ForeignKey("Customer")]
public string CustomerID { get; set; }
public virtual CustomerModel _Customer { get; set; }
}
雇员
public class EmployeeModel
{
[Key]
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
以及如何从我的任务控制器访问员工的名字。
最后一个问题:在模型之间混合一些代码优先和一些数据库优先是可以的,还是我应该遵循一种模式。
非常感谢您可以同时使用这两种模式,但我建议您使用我的方法,即使用CodeFirst,创建实体来存储数据,并使用viewmodels来显示数据:
public class Task
{
public int TaskID { get; set; }
//your other properties here...
public int EmployeeId { get; set; }
public int UserId { get; set; }
public int CustomerId { get; set; }
}
在“客户端律师”中,为任务模型创建ViewModel:
在GetTask或LoadTasks方法中,填写此视图模型:
public TaskViewModel GetTask(int id)
{
TaskViewModel model = new TaskViewModel();
model.Task = _db.GetTaskById(id);
model.Employee = _db.GetEmployeeById(model.Task.EmployeeId);
model.User = _db.GetUserById(model.Task.UserId);
model.Customer = _db.GetCustomerById(model.Task.CustomerId);
return model;
}
现在,您可以获取与任务相关的所有数据:
TaskId, TaskName, Created user's name + surname, Employee's name surname, Custemer's name + surname etc..
谢谢您的回答,但我没有属性_db.GetEmployeeById是否应该将其添加到我的员工控制器?对于其他的_db.GetUserById和_db.GetCustomerById也是一样的。还有_db是我任务的db上下文吗?这只是个想法。您可以在dbContext类中创建该方法,也可以不使用以下方法来创建:_db.TaskTable.where e=>e.TaskId==id;。这是一个GetTaskById方法
public TaskViewModel GetTask(int id)
{
TaskViewModel model = new TaskViewModel();
model.Task = _db.GetTaskById(id);
model.Employee = _db.GetEmployeeById(model.Task.EmployeeId);
model.User = _db.GetUserById(model.Task.UserId);
model.Customer = _db.GetCustomerById(model.Task.CustomerId);
return model;
}
TaskId, TaskName, Created user's name + surname, Employee's name surname, Custemer's name + surname etc..