MVC返回带有外键的实体
本文关键字:实体 返回 MVC | 更新日期: 2023-09-27 17:55:06
我试图返回一个有外键的实体,我有点卡住了。尝试用两个表的结果填充下拉列表。ItemType和IndicatorType表之间存在外键关系。
代码是:
public async Task<PagedResults<ItemType>> GetAsync(int skip = 0, int take = -1)
{
PagedResults<ItemType> pagedResults;
try
{
IQueryable<ItemType> query = _dbSet.Include("IndicatorDetails");
query = take == -1
? query.OrderBy(i => i.IndicatorDetails.Code)
: query.OrderBy(i => i.IndicatorDetails.Code);
var data = await query.ToListAsync();
pagedResults = new PagedResults<ItemType>(data, skip, take, data.Count);
}
catch (Exception e)
{
throw new Exception(string.Format("Could not get item types from database. {0}", e.Message), e);
}
return pagedResults;
}
我可以让它的工作只是返回单行,因为我在传递一个id,我可以在ItemType和IndicatorType类之间匹配,但我不知道如何得到_dbSet做包括IndicatorDetails。
您总是可以通过连接两个表来执行查询示例(j1是您的ItemType和j2是您的IndicatorType)
ViewBag.listItems = ItemType.Join(IndicatorType, j1 => j1.key, j2 => j2.key2, (j1, j2) => new {j1, j2}).AsEnumerable().Select( v => new SelectListItem() { Value = t.t1.userid.ToString(), Text = string.Format("{0} {1}", t.t1.firstName, t.t2.lastName) });
在视图中,你可以传递ViewBag。listitem
@Html.DropDownListFor(m => m.userid, new SelectList(ViewBag.listItems,"Value","Text","-Sélections-"), new { @class ="form-control"})