MVC - 无法查询身份表

时间:2015-05-29 13:01:10

标签: asp.net-mvc asp.net-identity

我正在尝试查询AspNetUsers表。

我已将db变量设置如下

public ApplicationDbContext db = new ApplicationDbContext();

然而,db的intellisense没有列出任何身份表,但它会为网站创建的其他身份表(在IdenityModels.cs中列出)例如....... < / p>

public System.Data.Entity.DbSet<FeatureRequestMVC.Models.Feature> Features { get; set; }

如何获取db intellisense中列出的身份表(如AspNetUsers)?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码实例化UserManager类,

UserManager<ApplicationUser> userManager;
userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));

添加完所需的所有using语句后,可以调用各种方法来处理Identity用户。

// find user by id, also available for email and username        
var user = await userManager.FindByIdAsync(Id param);

// with the user object above you can delete the referenced user
await userManager.DeleteAsync(user);

// Update user
await userManager.UpdateAsync(user);

上述所有方法都使用 async 等待关键字

MSDN UserManager

希望这有帮助。

答案 1 :(得分:0)

身份要求您通过UserManager获取数据,但是在某些情况下您需要查询身份表。你可以做点什么

var sqlQuery = @"SELECT Users.UserName FROM AspNetUserClaims AS Claims
INNER JOIN AspNetUsers AS Users ON Claims.UserId = Users.Id
WHERE Claims.ClaimType = {0} AND Claims.ClaimValue = {1}";
var userName = dbContext.Database.SqlQuery<string>(sqlQuery, "MyClaimType", theClaimValue).ToList().FirstOrDefault();

这是拉一个UserName并将变量设置为字符串。只要属性名称与查询中的列或别名相匹配,您就可以创建模型并将该模型传递到SqlQuery<T>