在ASP.NET中通过EF返回DB记录

时间:2018-02-12 16:45:22

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

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

目标是根据 UserID errandID 返回记录。 我的控制器如下所示:

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();
        }

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

1 个答案:

答案 0 :(得分: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