C# 首先使用实体框架和代码的空AspNetUser
我正在学习ASP.NETMVC5,但在实体框架方面遇到了问题。我首先使用现有数据库编写代码,并对数据库结构进行了一些更新,以便我的其他表使用C# 首先使用实体框架和代码的空AspNetUser,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正在学习ASP.NETMVC5,但在实体框架方面遇到了问题。我首先使用现有数据库编写代码,并对数据库结构进行了一些更新,以便我的其他表使用AspNetUser表中的ID作为用户ID。我想我已经正确更新了数据库,因为它现在以Intellisense显示(我以前使用的是自定义用户表),但由于某种原因,当我运行以下命令时,我会得到一个NullReferenceException: public ActionResult About() { ViewBag.Messag
AspNetUser
表中的ID作为用户ID。我想我已经正确更新了数据库,因为它现在以Intellisense显示(我以前使用的是自定义用户表),但由于某种原因,当我运行以下命令时,我会得到一个NullReferenceException
:
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
MarkContext x = new MarkContext();
var y = x.courses.FirstOrDefault();
foreach(var c in x.courses)
{
System.Diagnostics.Debug.WriteLine(c.courseCode + " " + c.courseTitle + " " + c.AspNetUser.Id);
}
return View();
}
在查询的c.AspNetUser
部分可以找到null
。如果我已经验证了ID是否正确创建,为什么会为null?我是否可能需要为此使用即时加载,如果需要,在这种情况下如何执行
旁注:这是在默认MVC设置附带的About()页面上,因此除了在
HomeController
中的这个方法和数据库本身之外,我还没有定制任何东西 如图所示,您需要在执行紧急加载后选择数据
然后,您可以选择以下值:
foreach(var c in x.courses.Include("AspNetUser"))
{
System.Diagnostics.Debug.WriteLine(c.courseCode + " " + c.courseTitle + " " + c.AspNetUser.Id);
}
问题是,不知怎的,在我链接的一个表的字段中插入了一大块尾随空格。虽然SQLServer没有确认这些空间,但这显然会导致实体框架链接这些空间时出现问题。用一个简单的
RTRIM()
从该列的条目中删除尾随空格解决了这个问题。我这样尝试过:`foreach(x.courses.Include(“AspNetUser”)中的var c){System.Diagnostics.Debug.WriteLine(c.courseCode+“”+c.courseTitle+“”+c.AspNetUser.Id);}`但是对于c.AspNetUser
,我仍然得到null
。