我有3個規則,請求,執行和批准者的類。使用ViewModel從多個表中獲取數據?
我想這三個表組合成一個ViewModel,這樣我可以在一個單一視圖獲取的requestId,描述,審批和執行狀態。 這是我的第一次嘗試,似乎工作,但我覺得這是非常不正確的創建一個ViewModel的方式。請提出一個更好的方法。
public class Rules
{
[Required]
public virtual int RulesId { get; set; }
[Required]
public virtual string RulesDescription { get; set; }
[Required]
public virtual int ApprovalLevels { get; set; } //if 0 then auto approved.
[Required]
public virtual string Requestor { get; set; }
}
public class Requests
{
[Required]
public virtual int RequestsId { get; set; }
[Required]
public virtual DateTime RequestTime { get; set; }
[Required]
public virtual bool isCompleted { get; set; }
[Required]
public virtual string UserName { get; set; }
[Required]
public virtual int RulesId { get; set; }
public virtual string Description { get; set; }
}
public class ExecutionStatus
{
[Required]
public virtual int ExecutionStatusId { get; set; }
[Required]
public virtual int RequestId { get; set; }
[Required]
public virtual int CurrentApproverLevel { get; set; }
[Required]
public virtual string ApprovalStatus { get; set; }
}
public class Approvals
{
[Required]
public virtual int ApprovalsId { get; set; }
[Required]
public virtual int RulesId { get; set; }
[Required]
public virtual int ApproverLevel { get; set; }
[Required]
public virtual string ApproverName { get; set; }
}
public class RequestExecutionViewModel
{
private RequestsContext db = new RequestsContext();
public RequestExecutionViewModel(string username)
{
this.Request = db.Requests.Where(a => a.UserName.Equals(username)).First();
//aa = db.Approvals.Where(a => a.RulesId.Equals(Request.RulesId));
this.Approvals = (List<Approvals>) db.Approvals.Where(a => a.RulesId.Equals(Request.RulesId)).ToList();
this.ExecutionStatus = (List<ExecutionStatus>)db.ExecutionStatus.Where(a => a.RequestId.Equals(Request.RequestsId)).ToList();
}
[Required]
public virtual int RequestExecutionViewModelId { get; set; }
public Requests Request {get;set;}
public List<Approvals> Approvals { get; set; }
public List<ExecutionStatus> ExecutionStatus { get; set; }
}
編輯:做模型內的數據庫查詢似乎是錯誤的。應該有更好的做事方式。
你覺得有什麼不正確的嗎? (不以這種或那種方式對它進行評論,但是如果我們知道你不喜歡它並想改變它,可能會更容易給你一個提示) – 2012-02-17 15:54:00
組成相當不錯,但是,你不應該包含在viewmodel中的'private RequestsContext db = new RequestsContext();'和'RequestExecutionViewModel()' 。另外,你可能想用'IList <>'而不是'List <>' – 2012-02-17 15:59:11
謝謝jim。這也是我的擔心。做一個noob,我想我錯過了一些東西。 – drieddust 2012-02-17 16:02:08