Wat*_* v2 5 entity-framework asp.net-identity asp.net-identity-3
我使用ASP.NET Identity 2.2.0与ASP.NET MVC 5.2.3和Entity Framework 6.1.2.
我使用带有Code First的ASP.NET Identity将一个新属性及其相应的表添加到我的数据库中,如下所示:
public class ApplicationUser
{
[ForeignKey("UserTypeId")]
public UserType Type { get; set;}
public int UserTypeId { get; set;}
}
public class UserType
{
[Key]
public int Id { get; set;}
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,从某些动作开始,当我打电话时:
var user = UserManager.FindByNameAsync(userName);
Run Code Online (Sandbox Code Playgroud)
它确实为用户提供了正确的,UserTypeId因为它是一个原始的,但它没有获得该类的UserType属性ApplicationUser.
如果我没有使用这个抽象,我会调用LoadProperty<T>或者Include实体框架中的方法在类上包含名为Type(类型UserType)的导航属性或关系ApplicationUser.
我如何使用ASP.NET Identity进行此操作UserManager?我怀疑唯一的方法是在我的自定义UserManager派生类中重写此方法并自己完成吗?
使用Entity Framework延迟加载,您需要确保将导航属性标记为virtual.
public class ApplicationUser
{
[ForeignKey("UserTypeId")]
public virtual UserType Type { get; set;}
public int UserTypeId { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您不能/不想使用延迟加载,那么您仍然可以像使用任何其他实体一样使用您的上下文:
var user = context.Users.Include(u => u.Type).Single(u => u.UserName == userName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2741 次 |
| 最近记录: |