我正在使用实体框架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添加到我的数据库条目中?
答案 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() })
我不确定'用户'表的功能是什么。