にエンティティフレームワークのために更新されません。次のようにcustomRoleProviderが設定IHAVE:ユーザーロールは、私はユーザーとロールの間に次の関係を持つアプリを持っているcustomroleprovider
public class CustomRoleProvider : RoleProvider
{
private readonly IUnitOfWork _unitOfWork;
public CustomRoleProvider()
{
_unitOfWork = DependencyResolver.Current.GetService<IUnitOfWork>();
}
public CustomRoleProvider(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
...
public override string[] GetRolesForUser(string username)
{
var user = _unitOfWork.UserRepository.GetUser(username);
var roles = from r in user.Roles
select r.Name;
if (roles != null)
return roles.ToArray();
else
return new string[] { };
}
public override bool IsUserInRole(string username, string roleName)
{
var user = _unitOfWork.UserRepository.GetUser(username);
var roles = from r in user.Roles
select r.Name;
return roles.Any(r => r.Equals(roleName, StringComparison.CurrentCultureIgnoreCase));
}
...
}
これは正常に動作するようですし、例外を除いて、[OK]の役割を返します。
不適切なアプリを再起動するまで、コードに新しい役割が見つかりません。実験のビットを通じ
私はUnitOfWorkのをインスタンス化した場合、私はそれを必要とする時はいつでも役割の完全なリストが発見されていることを発見しました:
public override string[] GetRolesForUser(string username)
{
**var unitOfWork = new UnitOfWork();**
var user = unitOfWork.UserRepository.GetUser(username);
var roles = from r in user.Roles
select r.Name;
if (roles != null)
return roles.ToArray();
else
return new string[] { };
}
私は本当にこのアプローチを行うにはしたくないが。
これを修正する方法を知っている人はいますか?
_unitOfWork.Save()です。 .SaveChanges()を呼び出しますか? –
は確かです。申し訳ありませんが、間違いがありました。 – Stevek
ObjectContext.Refreshを呼び出すとどうなりますか? –