![](/img/trans.png)
[英]Keeping user's Information in Custom membership & role provider in MVC 4 ASP.NET
[英]ASP.NET MVC 4 - Custom Membership & Role Entities Not Updating
我正在使用C#和Entity Framework开发我的第一个ASP.NET MVC 4项目,并且希望使用自己的SQL Server数据库和表来实现自定义成员资格和角色。
我开发了两个类,分别称为“ CustomMembershipProvider”(继承于MembershipProvider)和“ CustomRoleProvider”(继承于RoleProvider)。 这两个类在第一次执行时似乎都能正常工作,但是当我手动更新SQL Server中的字段时(例如,更改“权限名称”或“权限描述”),我在Entity上执行的LINQ查询似乎已过时。
为了清楚起见,在我的“权限”表(tblRights)中控制角色,该表包含诸如“ RightName”和“ RightDescription”之类的字段名称。
下面是我执行的代码的示例,该代码返回一个包含Role / Right值(例如“ Operator”和“ Manager”)的字符串数组:
namespace MyProject.Classes
{
public class CustomRoleProvider : RoleProvider
{
private MyEntities db = new MyEntities();
public override string[] GetRolesForUser(string username)
{
tblOperator _tblOperator = (from prod in db.tblOperators
where prod.Username == username
select prod).FirstOrDefault();
var roles = _tblOperator.tblOperatorRights.Where(m => m.WorkCentreID == 1).ToArray();
return roles.Select(m => m.tblRight.RightName).ToArray();
}
}
}
现在,假设我手动更新SQL Server,并将角色名称从“ Manager”更改为“ Administrator”,则下次执行此代码时,它仍将返回“ Operator”和“ Manager”,而不是“ Operator”和“ Administrator”。
谁能看到我要去哪里错了? 非常感谢您的协助。
克里斯,问候
感谢@BenRobinson,
如此简单,却如此有效! 我是C#的新手,所以像这样的小事一直在躲避我! 谢谢! 完整的代码如下:
namespace MyProject.Classes
{
public class CustomRoleProvider : RoleProvider
{
private MyEntities db;
public override string[] GetRolesForUser(string username)
{
db = new MyEntities();
tblOperator _tblOperator = (from prod in db.tblOperators
where prod.Username == username
select prod).FirstOrDefault();
var roles = _tblOperator.tblOperatorRights.Where(m => m.WorkCentreID == 1).ToArray();
return roles.Select(m => m.tblRight.RightName).ToArray();
}
}
}
克里斯,问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.