0

по умолчанию, если FindByIdAsync, FindById и т. Д. Работают должным образом.C# MVC 5 User Store custom findby

Как бы я мог реализовать FindBySomeOtherField?

Как минимум я хотел бы иметь возможность UserManager.FindBy в любом поле от главной таблицы AspNetUsers. Такие, как UserManager.FindByPhoneNumber

В идеале, я бы смог UserManager.FindByCustomField

Я не хочу, чтобы реализовать полностью новый магазин пользователя.

Я думаю, что в худшем случае я мог бы найти и скопировать весь пользовательский магазин для MVC 5 как есть и добавить его в свой проект, а затем реализовать его, однако я бы просто добавил класс, который включает в себя функцию и сделайте это, так как я предпочитаю хранить пользователь как есть и просто хочу расширить его функциональность.

+0

Нужно ли ** ** входить в 'UserManager'? Вы можете запросить таблицы непосредственно через Entity Framework. В хорошем смысле это то, что в конечном итоге делает «UserManager». –

+0

добавьте Entity Framework в свой проект, а затем используйте ['FirstOrDefault()'] (https://msdn.microsoft.com/en-us/library/system.linq.enumerable.firstordefault (v = vs.110) .aspx) –

+0

Да, это решение будет работать, я бы предпочел что-то более элегантное. –

ответ

2

Не уверен, правильно ли я понимаю, но следующее должно работать?

IEnumerable<[Object]> results = [ObjectCollection].Where(u => u.[Field] == [Value]) 

ИЛИ

[Object] result = [ObjectCollection].SingleOrDefault(u => u.[Field] == [Value]) 

Если вы хотите его для конкретной области, вы можете извлечь его в метод;

public [Object] FindBy[Field]([FieldType] value) 
{ 
    return [ObjectCollection].SingleOrDefault(u => u.[Field] == [Value]) 
}