سلام
فرض کنید جداول زیر را داریم
CREATE TABLE [dbo].[User]( [UserId] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NULL, CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ( [UserId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [dbo].[Role]( [RoleId] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NULL, CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED ( [RoleId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [dbo].[Permission]( [PermissionId] [int] IDENTITY(1,1) NOT NULL, [UserId] [int] NULL, [RoleId] [int] NULL, [Status] [bit] NULL, CONSTRAINT [PK_Permission] PRIMARY KEY CLUSTERED ( [PermissionId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
و داده های زیر را هم وارد کرده ایم
INSERT INTO [dbo].[Role]([Name])VALUES('ثبت') INSERT INTO [dbo].[Role]([Name])VALUES('ویرایش') INSERT INTO [dbo].[Role]([Name])VALUES('حذف') INSERT INTO [dbo].[Role]([Name])VALUES('مشاهده کلی') INSERT INTO [dbo].[Role]([Name])VALUES('مشاهده جزئی') INSERT INTO [dbo].[Role]([Name])VALUES('روزانه') INSERT INTO [dbo].[Role]([Name])VALUES('شبانه') INSERT INTO [dbo].[User]([Name])VALUES('کاربر1') INSERT INTO [dbo].[User]([Name])VALUES('کاربر2') INSERT INTO [dbo].[User]([Name])VALUES('کاربر3') INSERT INTO [dbo].[User]([Name])VALUES('کاربر4') INSERT INTO [dbo].[Permission]([UserId],[RoleId],[Status])VALUES(1,1,1) INSERT INTO [dbo].[Permission]([UserId],[RoleId],[Status])VALUES(1,2,1)
حال می خواهم به کمک linq دستوری بنویسم که به من لیتسی بدهد که هر کاربری به چه چیزهای دسترسی دارد و ندارد بصورت فعال و غیر فعال
مثلا کاربر1 را بوصرت زیر نمایش بدهد
1-ثبت فعال
2-ویرایش فعال
3-حذف غیرفعال
4- مشاهده کلی غیرفعال
5- مشاهده جزئی غیرفعال
6-روزانه غیرفعال
7-شبانه غیرفعال
و برای بقیه کاربران هم همه باید غیرفعال باشد
این دستور را چگونه باید بنویسم
از Ef استفاده می کنید ؟
سلام مهندسین عزیز آیا راهی وجود ندارد باتشکر
به شکل زیر عمل کنید:
var userRoles = context.Permissions .Where(permission => permission.UserId == 1) .Select(permission => new {permission.Role.Name}).ToList(); foreach (var userRole in userRoles) { Console.WriteLine(userRole); }
سلام
مهندس این دستور فقط لیست دسترسیهای که به کاربر اختصاص یافته است را میدهد اما من کلیه دسترسیها را میخواهم
دسترسیها که کاربر دارد وضیعت فعال باشد و دسترسی ندارد وضیعتش غیرفعال باشد
باتشکر از لطفتان
var userPermissions = context.Permissions .Where(permission => permission.UserId == 1) .ToList(); var permissions = context.Permissions.ToList(); var list = permissions.Select(x => new { PermissionName = x.Name, IsActive = userPermissions.Any(y => y.Name == x.Name) }).ToList(); foreach (var result in list) { Console.WriteLine($"Permission:{result.Permission } IsActive:{result.IsActive}"); }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)