gpt4 book ai didi

c# - 使用 ViewModel 从多个表中获取数据?

转载 作者:太空狗 更新时间:2023-10-30 00:43:54 24 4
gpt4 key购买 nike

我有 3 个类用于规则、请求、执行和批准者。

我想将这三个表合并到一个 viewModel 中,这样我就可以在一个 View 中获取请求 ID、描述、批准者和执行状态。这是我第一次粗略的尝试,它似乎有效,但我觉得这是创建 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; }
}

编辑:在模型内部进行数据库查询对我来说似乎是错误的。应该有更好的做事方式。

最佳答案

组成相当不错,但是,你不应该private RequestsContext db = new RequestsContext();RequestExecutionViewModel()包含在 View 模型中。另外,您可能想使用 IList<>而不是 List<> .

您的数据库访问应该在服务层或 Controller 操作中执行,并且可能应该通过一些 IOC 容器注入(inject)。

只是我的 2 美分

关于c# - 使用 ViewModel 从多个表中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9331280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com