我添加了firstName,lastname,address,cardid等,以用于ASP.NET Core MVC应用程序的应用程序用户。
我希望能够添加其他功能以在Usermanager类中搜索该数据库,以根据这些其他属性搜索用户。
例如它已经包含用于通过名称(用户名(查找的功能
_userManager.FindByNameAsync("Mike123")
我希望能够通过cardid
找到用户对象_userManager.FindByCardIDAsync("123456789")
或多个用户通过地址
_userManager.FindByAddressAsync("123 Fake St. Real Town, USA")
我已经成功使用了此功能
ApplicationUser User = _userManager.Users.FirstOrDefault(u => u.CardID == CardID);
我仍然想了解一种扩展该类别的方法,或者我应该自己创建自己并从中继承?
扩展方法呢?例如:
using System;
using System.Collections.Generic;
using System.Linq;
using ExampleProject.Models;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
namespace ExampleProject
{
public static class UserManagerExtensions
{
public static async Task<ApplicationUser> FindByNameAsync(this UserManager<ApplicationUser> um, string name)
{
return await um?.Users?.SingleOrDefaultAsync(x => x.UserName == name);
}
public static async Task<ApplicationUser> FindByCardIDAsync(this UserManager<ApplicationUser> um, string cardId)
{
return await um?.Users?.SingleOrDefaultAsync(x => x.CardID == cardId);
}
public static async Task<ApplicationUser> FindByAddressAsync(this UserManager<ApplicationUser> um, string address)
{
return await um?.Users?.SingleOrDefaultAsync(x => x.Address == address);
}
}
}
但是请注意,这是一个简单的示例,只有当名称/cardid/地址是唯一的...
时,才能正常工作。我已经使用SingleOrDefaultAsync
作为对姓名/cardid/地址不是唯一的情况的保护更好的标准,否则您将退还用户的集合?