Я использую пакет Nuget Microsoft.AspNet.Identity.EntityFramework и подключение к существующей базе данных SQL Server, где столбец ID таблицы AspNetUsers задан как UniqueIdentifier.Использование ASP.NET Identity EntityFramwork для существующей таблицы AspNetUsers с идентификационной колонкой, установленной на UniqueIdentifier
При выполнении вызова, чтобы получить пользователь, я получаю сообщение об ошибке:
Свойства «Id» на «IdentityUser`4» не может быть установлен в значение «System.Guid». Вы должны установить это свойство в ненулевое значение типа «System.String».
Есть ли способ установить свойство Id в коде, поскольку я не могу изменить свойство столбца в моей базе данных.
Вот мои фрагменты кода:
AuthProvider.cs
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task GrantCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
using(Repository _repo = new Repository())
{
IdentityUser user = await _repo.FindUser(context.UName, context.PWord);
if(user == null)
{
// User Not Found/Invalid UName or PWord.
}
}
}
}
Repository.cs
public class Repository : IDisposable
{
private AppContext _ctx;
private UserManager<IdentityUser> _usrMgr;
public Repository()
{
_ctx = new AppContext();
_usrMgr = new UserManager<IdentityUser>(new UserStore<IdentityUser>(_ctx));
}
public async Task<IdentityUser> FindUser(string uName, string pWord)
{
// Setting the breakpoint here in this line below:
IdentityUser usr = await _usrMgr.FindAsync(uName, pWord);
return user;
}
}
На контрольной точке я настроил на Repository.cs , Я вижу ошибку, когда я расширяю переменную _usrMgr и проверяю свойство Users.
Update: Я нашел несколько битов информации здесь (в разделе под названием):
Make the Type of Primary Key Be Extensible for Users and Roles
, но я не уверен в том, как реализовать это правильно. Нужно ли добавлять новый класс? Реализация там довольно неопределенная в моем понимании.