使用实体框架

时间:2018-03-13 14:34:53

标签: sql entity-framework-6 userid

我正在使用实体框架v6.2.0和ASP Net MVC创建一个网页来访问数据库并编辑条目。绝大多数代码是为我提供的基本框架。数据库已成功连接,可以查看,编辑和删除条目。此外,我已经实现了一些基本的分页,搜索和排序,因为microsoft提供了有关如何实现这些的说明。在网站真正起作用之前,我需要做的最后一件事是从用户登录中提取userID并将其保存为EnteredBy字段,然后再将任何更改或新条目保存到表中。

if (ModelState.IsValid)
        {
            string currentUserId = User.Identity.GetUserId();
            yasukosKitchen.EnteredBy = currentUserId;
            db.YasukosKitchens.Add(yasukosKitchen);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

这段代码看起来非常简单,我添加了using Microsoft.AspNet.Identity;,因此它编译得很好。但是,当我尝试测试此代码时,EnteredBy字段保留为空或null。

我对信息的搜索发现了一个帖子,建议使用以下代码行。

ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);

但是当我尝试添加我收到错误时,找不到ApplicationUser,并且在此上下文中不存在用户。解决这个问题的方法可能就是盯着我看,但我缺乏经验和理解力正在扼杀我。

正如所建议的那样:我的问题是,我如何获得和/或正确地将UserId添加到我的数据库条目中?

1 个答案:

答案 0 :(得分:0)

如果您的数据库上下文有一个YasukosKitchen表的条目;通常是这样的,

public virtual DbSet<YasukosKitchen> YasukosKitchens {get; set;}

和YasukosKitchen表有一个列'EnteredBy'(字符串128长度),然后您可以直接从View发布登录用户ID的值。 将其添加到“创建”视图的最开头。

@using Microsoft.AspNet.Identity
@using Microsoft.AspNet.Identity.EntityFramework

在提交按钮之前的表单末尾添加此代码。

@Html.HiddenFor(model => model.EnteredBy, new { @Value = User.Identity.GetUserId() })

我不确定'用户'表的功能是什么。