我正在尝试查询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)?
由于
答案 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 和等待关键字
希望这有帮助。
答案 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>
。