ورود

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



sunn789
جمعه 17 بهمن 1393, 11:36 صبح
سلام
چه جوری میتونم لیست کاربر ها رو که به یک نقش وابسته اند دریافت کنم
از این کد استفاده کردم اما برگشتیم فقط کد بود نه نام کاربران

var role = (from r in db.Roles where r.Name.Contains("Customer") select r).FirstOrDefault();
db.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(role.Id))

public List<ApplicationUser> GetUsersInRole(string roleName)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var role = roleManager.FindByName(roleName).Users.First();
var usersInRole = Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
return usersInRole;
}
برگشتی :

System.Data.Entity.DynamicProxies.ApplicationUser_ 3693192318EE31B59F664B2BC5F167AE1B1CDF8C70C5144258 25567AB7686EE4

r4hgozar
جمعه 17 بهمن 1393, 12:46 عصر
سلام.
یه مدت خودم رو کشتم ارتباط چند به چند رو یاد بیرم.

var newmodel = _db.Users.Include(x => x.UserName).Where(i => i.roleid == roles);

ور roleid رو از ورودی بگیرین.
فکر کنم همین رو بخواین.

r4hgozar
جمعه 17 بهمن 1393, 12:55 عصر
البته میشه جور دیگه هم نوشت. یعنی از جدول role دنبال user ها گشت. اما اخر باید کاری کرد که تکراری ها رو نشون نده.چون اخ چند به چند باشه در جدول واست یه ازای هر user امکان داره چند تا role باشد.
موفق باشید

RIG000
جمعه 17 بهمن 1393, 15:15 عصر
var selectRoleId = (from rd in db.Roles where rd.RoleName = "customer"
select rd.RoleID).FirstOrDefault();
var selectWithRoleId = (from cs in db.Users
where cs.RoleID == selectRoleId
select cs
).ToList();

RIG000
جمعه 17 بهمن 1393, 15:23 عصر
var join = (from rd in db.Roles where rd.RoleName == "customer"
join cs in db.Users
on rd.RoleID equals cs.RoleID
select cs).ToList();

sunn789
جمعه 17 بهمن 1393, 19:22 عصر
سلام.
یه مدت خودم رو کشتم ارتباط چند به چند رو یاد بیرم.

var newmodel = _db.Users.Include(x => x.UserName).Where(i => i.roleid == roles);

ور roleid رو از ورودی بگیرین.
فکر کنم همین رو بخواین.
خوب i.roleid وجود نداره . پس به i.Roles تغییر دادم و متاسفانه ID نداره
جواب نداد

RIG000
جمعه 17 بهمن 1393, 22:14 عصر
خوب i.roleid وجود نداره . پس به i.Roles تغییر دادم و متاسفانه ID نداره
جواب نداد
من اون دوتایی که نوشتم جواب داد. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
شما میگی roleid نداشت! roleid فیلد شماست! از جایی دیگه نمیاد که!
کد های من مورش چی بود!؟ به دوشکل نوشتم. یا من سوال شما رو نفهمیدم یا اینکه چیز هایی هست که من بلد نیستم ؟

sunn789
شنبه 18 بهمن 1393, 18:43 عصر
نه دوست عزیز اول اینکه متشکر کمک میکنید دوم اینکه من از user خود mvc استفاده میکنم متاسفانه زمانی "i" رو میزنم roleId نمایش داده نمیشه فقط role نمایش داده میشه .
ولی هنوز برای من حل نشده .

RIG000
شنبه 18 بهمن 1393, 23:08 عصر
roleid باید یکی از فیلد های user باشه مهندس. یعنی الان db.users رو میزنی یکی از فیلد های این یوزر باید roleid باشه . ایا داری جز فیلد هات؟

sunn789
شنبه 25 بهمن 1393, 11:56 صبح
سلام دوستان
لطف کردین اما، بر اساس پیشفرض mvc کاربر در یک جدول ذخیره میشه و نقشها در یک جدول جداگانه و یک جدول جدا هم که دو ستون داره نام کاربر و نقش رو به هم ارتباط میده .
یعنی توی جدول user ، ما RoleId نداریم ،
پیشنهادی دارین یا میشه اشتباه من رو تصحیح کرد؟

RIG000
شنبه 25 بهمن 1393, 12:08 عصر
فکر نکنم اصلا این موضوع جالب باشه که سه جدولی شده ....
حالا یه کاری می کنیم از اونجایی که اسم کاربر تو جدول دو ستون داری میاد ما فقط باید از همین جدول و جدول نقش ها استفاده کنیم. چون دیگه user رو نیاز نداریم. (هر چند که موندم چرا اسم یوزر رو تو دو جدول چرا اوردیم!!!!!!)
شما با یه Select بین جدول (دو ستونه (ID , UserName )) و Roles میزنید .
در ضمن اگر شد جداول رو اینجا بذارید ببینیم

sunn789
شنبه 25 بهمن 1393, 13:06 عصر
سلام
خوب در مورد جدول اگر پروژه شاده mvc ساخته اید بر همین اساس خواهد بود ، اما ما میخواهیم نام کاربران را در لیست باز شو نمایش بدیم ، از طرفی ای دی کاربر در جدول نقشها با ای دی نقشها ارتباط برقرار میکنه

RIG000
شنبه 25 بهمن 1393, 13:22 عصر
میشه ارتباطات و جداول رو برام اینجا بنویسید؟
اسم جدول فیلد ها و ارتباطات؟

mahdisg
یک شنبه 04 مرداد 1394, 11:37 صبح
فکر نکنم اصلا این موضوع جالب باشه که سه جدولی شده ....
حالا یه کاری می کنیم از اونجایی که اسم کاربر تو جدول دو ستون داری میاد ما فقط باید از همین جدول و جدول نقش ها استفاده کنیم. چون دیگه user رو نیاز نداریم. (هر چند که موندم چرا اسم یوزر رو تو دو جدول چرا اوردیم!!!!!!)
شما با یه Select بین جدول (دو ستونه (ID , UserName )) و Roles میزنید .
در ضمن اگر شد جداول رو اینجا بذارید ببینیم
جدول سوم رابطه بین کاربر و نقش هاست
و این برای اینه که هر کاربر میتونه چندتا نقش داشته باشه

salar IT man
یک شنبه 04 مرداد 1394, 12:01 عصر
سلام
چه جوری میتونم لیست کاربر ها رو که به یک نقش وابسته اند دریافت کنم
از این کد استفاده کردم اما برگشتیم فقط کد بود نه نام کاربران

var role = (from r in db.Roles where r.Name.Contains("Customer") select r).FirstOrDefault();
db.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(role.Id))

public List<ApplicationUser> GetUsersInRole(string roleName)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var role = roleManager.FindByName(roleName).Users.First();
var usersInRole = Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.RoleId)).ToList();
return usersInRole;
}
برگشتی :

System.Data.Entity.DynamicProxies.ApplicationUser_ 3693192318EE31B59F664B2BC5F167AE1B1CDF8C70C5144258 25567AB7686EE4


به صورت زیر عمل کنید.

var dbContext=new ApplicationDbContext();
var roleUserIdsQuery=from role in dbContext.Roles
where role.Name==roleName
from user in role.Users
select user.UserId;
var users=dbContext.Users.where(u=>roleUserIdsQuery.Contain(u.Id)).Tolist();