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。

MVC返回带有外键的实体

您总是可以通过连接两个表来执行查询示例(j1是您的ItemTypej2是您的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"})