我正在为企业创建一个缺勤管理Web应用程序。当员工选择时间段时,我需要列出请求。
我有3个关于请求的表格。
要在表上列出请求的主体表是“请求”,我还有可以待处理,已批准或已拒绝的RequestState表,以及可以用于病假,假期等的RequestType表...
表格请求:
表格请求状态
表RequestType
我正在使用asp.net mvc和angularJs。使用EntityFramework,我可以查询要使用angularJS列出的内容。
所以我想在html表中列出请求表列表,我将在带有TypeId和StateId的图像中向您显示。但是我想显示TypeID和StateId的名称,而不是数字。
在我的EntityFramework查询中,我需要做什么?加入吗?
这是获取所有PendingRequests的代码,它将返回带有表Requests上的键的json。但是我想更改或在查询中使用某些内容来获取其他表的名称(RequestState和RequestType),而不是ID。
public JsonResult GetAllPendingRequests()
{
var data = "";
using (CiberbitHolidayMgmt bd = new CiberbitHolidayMgmt())
{
bd.Configuration.LazyLoadingEnabled = false;
var pendingRequests = bd.Requests.Where(a => a.StateId == 1);
data = JsonConvert.SerializeObject(pendingRequests, Formatting.None,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
}
return new JsonResult { Data = data, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
关于ng repeat和JavaScript的代码,我有http请求
<tbody>
<tr ng-repeat =" a in getPendingRequests">
<td>{{a.TypeId}}</td>
<td>{{a.StartDate}} - {{a.EndDate}}</td>
<td>{{a.Requested}} days</td>
<td>{{a.StateId}}</td>
<td><a href="@Url.Action("Details", "Request")"><i class="fas fa-info-circle "></i></a></td>
</tr>
</tbody>
function getAllPendingRequests() {
$http({
method: 'GET',
url: '/Request/GetAllPendingRequests',
})
.then(function (data) {
data.data = JSON.parse(data.data);
$scope.getAllPendingRequests = data.data;
console.log($scope.getAllPendingRequests);
}, function (data) {
alert("error");
});
}
Html Table with requests list [带有表的EntityFramework模型] [2]
基本上,我想在状态表和类型请求的html表上显示名称,而不是Ids,我想我需要一个带有连接的EntityFramework查询。谢谢!
更新
这是我查询过的图片!
我从不同的表中进行选择,匹配ID并创建了一个对象!
答案 0 :(得分:0)
这不是html或angularjs的问题。
您需要使用EntityFramework进行查询并返回正确的数据(RequestState和RequestType的名称,而不是Ids的名称)。
首先,您需要建立正确的实体映射:
在Request
表的实体映射中,为RequestState和RequestType添加虚拟属性,如下所示:
public virtual ICollection<RequestState> RequestStates { get; set; }
public virtual ICollection<RequestType> RequestTypes { get; set; }
然后在RequestState和RequestType类中添加Request
类的虚拟属性,如下所示:
public virtual ICollection<Request> Categories { get; set; }
现在,您应该可以执行以下查询:
var allRequests = db.Request.Where(r => r.TypeId == reqTypeId)
.SelectMany(r => r.Request);
在结果中,对于allRequests
中的每个对象,您将获得r.RequestStates.Name
和r.RequestTypes.Name
之类的属性