PDA

View Full Version : بدست اوردن تمام رول های یک کاربر



alireza_rashvand
چهارشنبه 12 خرداد 1395, 01:16 صبح
سلام خدمت همه دوستان

در mvc5 براي بدست اوردن تمام رول های یک کاربر از این کد استفاده می کردم

var model = (from role in db.Roles
from user in role.Users
where user.UserId == userId
select new RoleViewModel()
{
Name = role.Name,
RoleId = role.Id
}).ToList();


اما در mvc6 با خطا روبرو شدم


An unhandled exception occurred while processing the request.

ArgumentException: Property 'System.String Name' is not defined for type 'Microsoft.AspNet.Identity.EntityFramework.Identit yUserRole`1[System.String]'


به این صورت نوشتم:

var model = (from u in db.Users
from ur in u.Roles
join r in db.Roles on ur.RoleId equals r.Id
select new RoleViewModel()
{
Name = r.Name,
RoleId = r.Id
}).ToList();


بازهم خطا :


An exception of type 'System.Data.SqlClient.SqlException' occurred in EntityFramework.Core.dll but was not handled in user code


Additional information: Invalid column name 'Id'.


مشکل کجاست راه حلی چیست؟!

alireza_rashvand
جمعه 14 خرداد 1395, 02:10 صبح
قصد داشتم رول های کاربر رو از جدول user بدست بیارم ولی نمی دونم چرا رولی رو بر نمی گردونه بنابراین راه حل رو عوض کردم و مستقیم از جدول واسط UserRoles كم گرفتم ؛ کد رو می ذارم اگر کسی خواست استفاده کنه.



var model = db.Roles
.Join(db.UserRoles,
r => r.Id,
ur => ur.RoleId,
(r, ur) => new { r.Name, ur.RoleId, ur.UserId })
.Where(U => U.UserId == userId)
.Select(x => new RoleViewModel()
{
Name = x.Name,
Id = x.RoleId
}).ToList();