如何在UnitOfWork中使用身份?
我希望AccountController
继承自UnitOfWork
不是来自
IApplicationUserManager userManager,
IApplicationSignInManager signInManager,
IAuthenticationManager authenticationManager,
IApplicationRoleManager applicationRoleManager
我想使用身份,但不想使用实体框架
我进行了很多搜索,但没有任何结果
答案 0 :(得分:0)
除非有基类,否则AccountController唯一应继承的是Controller。然后,您的基类应该继承Controller,而AccountController继承基类。
您的UserManager和所有其他类Identity需要工作,需要在AutoFac中注册。它看起来应该像this,但该文章并未讨论使用实体框架。
要与UserStore一起使用UnitOfWork,IUnitOfWork必须是一个参数,并且您需要告诉AutoFac您要传递哪些参数。这样的事情。
builder.RegisterType<ApplicationUserStore>().As<IUserStore<UserMamber>>()
.WithParameter(new TypedParameter(typeof(IUnitOfWork), new UnitOfWork()))
.InstancePerRequest();
编辑:以下是您要求的其他代码:
public class UserStore<TUser> : IUserStore<TUser, int>
where TUser : IdentityMember, new()
{
private UserTable<TUser> _userTable;
private IUnitOfWork _db { get; set; }
public UserStore(IUnitOfWork database)
{
_db = database;
_userTable = new UserTable<TUser>(database);
}
public Task<TUser> FindByNameAsync(string userName)
{
return Task.FromResult(_userTable.Login(userName));
}
}
public class UserTable<TUser> where TUser : IdentityMember, new()
{
private readonly IUnitOfWork _unitOfWork;
public UserTable(IUnitOfWork unitOfWork)
{
this._unitOfWork = unitOfWork;
}
public TUser Login(string userName)
{
var y = _unitOfWork.WebPortalUsers.FindByUserName(userName);
var Identity = new TUser();
if(Identity != null)
{
Identity.UserName = y.UserName;
Identity.Id = y.Id;
}
return Identity;
}
}