【问题标题】:returning a DB record via EF in ASP.NET在 ASP.NET 中通过 EF 返回数据库记录
【发布时间】:2018-02-13 06:13:08
【问题描述】:

我仍然是编程新手,并且正在从事这个项目,在使用实体框架将数据提交到 SQL 中的表后我遇到了困难。虽然这一切都很好,但我正在努力返回我刚刚提交的记录。对我来说,挑战在于结合多个参数来识别记录。

目标是返回基于 UserIDerrandID 的记录。 我的控制器如下所示:

public ActionResult errandPreview()
        {
            var userID = User.Identity.GetUserId();
            var errandID = DB.errandList.Find(userID).ID;
            var model = new errands
            {
                //Title = DB.errandList.Find(errandID).Title.ToString(),
                Title = DB.errandList.Where(x => x.ID == errandID).FirstOrDefault().ToString()
            };
            return View();
        }

我正在尝试从登录用户那里获取用户 ID,然后通过此属性选择 errandID 以最终获得差事的标题(以及其他内容......)但我无法完成.感谢您的帮助!

【问题讨论】:

  • 你能更具体地了解你想要的输出吗?
  • 我想显示与一条记录相关的所有值,例如描述、日期等。
  • 有什么问题?实体框架?或返回模型查看?为什么你在不选择 Title 的情况下做 tostring ?

标签: sql asp.net-mvc entity-framework


【解决方案1】:

首先,如果您只是插入一条记录,您可能会回到某种带有列表的索引视图。从那里您可以将密钥作为参数传递给 errandPreview 操作。

假设您只想调用某种显示操作:

public ActionResult errandPreview()
{
    var userID = User.Identity.GetUserId();

    // This assumes 1 errand for a given user
    // Otherwise you will need to pass the errandId in as a parameter, ViewBag, etc.
    var errandToPreview = DB.errandList
            .OrderByDescending(el => el.ID)
            .FirstOrDefault(el => el.ID == userID);

    if (errandToPreview == null) { // handle error }

    // You could just send the errand to the view to display
    // return View(errandToPreview);

    // Otherwise build a viewmodel
    var viewmodel = new ErrandViewModel
    {
        Title = errandToPreview.Title,
        OtherErrandField = errandToPreview.OtherField,
        ...
    };
    return View(viewmodel);
}

ViewModel info here

【讨论】:

  • 谢谢@SteveGreene - 完成了这项工作。现在让我们假设一个用户 ID 有多个差事,我的目标是只显示最后一个(最新的)。当使用 DB.errandList.LastOrDefault(... 它不会完成这项工作。有什么建议吗?谢谢!
  • 在采用 FirstOrDefault 之前对列表进行排序。例如,按日期字段。我编辑了示例以获取最高 ID。
猜你喜欢
  • 2023-03-26
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2016-04-22
  • 1970-01-01
  • 2014-09-18
相关资源
最近更新 更多