Ef code first 对于Asp.net Identity User的POCO中的属性,我使用什么类型(类)
我有一个codefirst POCO,我想从我当前的ASP.NET身份用户中指定一个LastEditUser。我尝试使用新项目生成的类型ApplicationUser。但它只保存为null 这是我目前的尝试Ef code first 对于Asp.net Identity User的POCO中的属性,我使用什么类型(类),ef-code-first,poco,asp.net-mvc-5,asp.net-identity,Ef Code First,Poco,Asp.net Mvc 5,Asp.net Identity,我有一个codefirst POCO,我想从我当前的ASP.NET身份用户中指定一个LastEditUser。我尝试使用新项目生成的类型ApplicationUser。但它只保存为null 这是我目前的尝试 public class SomeClass { public string SomeProperty { get; set; } public ApplicationUser LastEditMember { get; set; } } 下面是我如何将其保存到控制器中的
public class SomeClass
{
public string SomeProperty { get; set; }
public ApplicationUser LastEditMember { get; set; }
}
下面是我如何将其保存到控制器中的
string currentUserId = User.Identity.GetUserId();
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);
instannceOfSomeClass.LastEditMember = currentUser;
再次加载后。LastEditMember属性为null。我建议使用UserManager类来获取用户对象,而不是使用DbContext对象。您可以使用UserManager.FindByIdAsync(currentUserId)获取用户。此外,我还考虑到只有在用户登录到应用程序后才会命中此代码,否则currentUserId将为null我尝试使用UserManager,它仍然只是返回一个ApplicationUser。当我将我的LastEditMember属性设置为等于此AplicationUser并保存时,一切似乎都正常,但当您再次加载实体时,LastEditMember再次为空。。。所以我还是被困在同一个地方。还有什么我可以尝试的吗?好的,我在数据库中看到,它实际上在LastEditMember列中保存了用户id。加载SomeClass实体时,用户只是没有加载到LastEditMember属性中。您的类应该遵循EF约定从DB存储和检索自定义类型。我的第一个预感是将其虚拟化,看看是否有效。否则,请按照EF期望的方式创建模型。谢谢,虚拟模型正是我所需要的!这个链接也将在未来帮助我