繁体   English   中英

ASP.NET MVC 4-自定义成员资格和角色实体未更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM