![](/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.