Maison base de données tutoriel mysql sqlserver 用户权限管理,LINQ去除它的重复菜单项

sqlserver 用户权限管理,LINQ去除它的重复菜单项

Jun 07, 2016 pm 06:02 PM
sqlserver 用户权限管理

事情是这样的,我有三张表,用户_角色关系表User_Role,角色_菜单关系表Role_Menu和菜单表

Menu,这三个表之间有如下关系:
User_Role=>RoleId=>RoleMenu
RoleMenu=>MenuId=>Menu
它们之间的业务关系是:
当用户登陆后,通过UserId得到User_Role列表,将用户所包括的角色得出
通过User_Role找到所有对应Menu
现在有个问题,就是一个用户可以有多少角色,一个角色有多个菜单,当然,两个不同的角色可以有相当的菜单项,这时,就出现一个问题,用户在“管理员”这个角色里有“文件”这个菜单,同时它在“新闻管理员”这个角色里也有“文件”这个菜单,这样返回就会出现两个完成相同的”文件“菜单,下面,我使用匿名类和distinct方法来解决这个问题,代码如下:
代码如下:
class Program
{
static void Main(string[] args)
{
#region 实体列表初始化
List userRole = new List
{
new User_Role("01",1),
new User_Role("01",2),
new User_Role("02",1),
};
List roleMenu = new List
{
new Role_Menu(2,3),
new Role_Menu(1,1),
new Role_Menu(1,2),
new Role_Menu(2,1),
new Role_Menu(2,2),
};
List menu = new List
{
new Menu(1,"编辑",2),
new Menu(2,"文件",1),
new Menu(3,"视图",3),
new Menu(4,"系统",4),
};
#endregion
var linq = from data1 in userRole
join data2 in roleMenu on data1.RoleId equals data2.RoleId
join data3 in menu on data2.MenuId equals data3.MenuId
where data1.UserId.Equals("01")
select new
{
UserId = data1.UserId,
MenuId = data2.MenuId,
Menu = data3,
};
linq.Distinct().OrderBy(i => i.Menu.OrderNumber).ToList()
.ForEach(i => Console.WriteLine("用户ID:{0},菜单ID{1},菜单名:{2}"
, i.UserId, i.MenuId, i.Menu.MenuName));
Console.ReadKey();
}
}
#region 实体对象
class User_Role
{
public string UserId { get; set; }
public int RoleId { get; set; }
public User_Role(string userId, int roleId)
{
this.RoleId = roleId;
this.UserId = userId;
}
}
class Menu
{
public int MenuId { get; set; }
public string MenuName { get; set; }
public int OrderNumber { get; set; }
public Menu(int menuId, string menuName, int orderNumber)
{
this.MenuId = menuId;
this.MenuName = menuName;
this.OrderNumber = orderNumber;
}
}
class Role_Menu
{
public int RoleId { get; set; }
public int MenuId { get; set; }
public Role_Menu(int roleId, int menuId)
{
this.RoleId = roleId;
this.MenuId = menuId;
}
}
#endregion

这样的结果是我希望看到的:

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment importer un fichier mdf dans sqlserver Comment importer un fichier mdf dans sqlserver Apr 08, 2024 am 11:41 AM

Les étapes d'importation sont les suivantes : Copiez le fichier MDF dans le répertoire de données de SQL Server (généralement C:\Program Files\Microsoft SQL Server\MSSQL\DATA). Dans SQL Server Management Studio (SSMS), ouvrez la base de données et sélectionnez Attacher. Cliquez sur le bouton Ajouter et sélectionnez le fichier MDF. Confirmez le nom de la base de données et cliquez sur le bouton OK.

Comment résoudre le problème selon lequel l'objet nommé existe déjà dans la base de données sqlserver Comment résoudre le problème selon lequel l'objet nommé existe déjà dans la base de données sqlserver Apr 05, 2024 pm 09:42 PM

Pour les objets du même nom qui existent déjà dans la base de données SQL Server, les étapes suivantes doivent être suivies : Confirmez le type d'objet (table, vue, procédure stockée). IF NOT EXISTS peut être utilisé pour ignorer la création si l'objet est vide. Si l'objet contient des données, utilisez un nom différent ou modifiez la structure. Utilisez DROP pour supprimer des objets existants (soyez prudent, sauvegarde recommandée). Vérifiez les modifications de schéma pour vous assurer qu'il n'y a aucune référence à des objets supprimés ou renommés.

Que faire si le service sqlserver ne peut pas être démarré Que faire si le service sqlserver ne peut pas être démarré Apr 05, 2024 pm 10:00 PM

Lorsque le service SQL Server ne parvient pas à démarrer, voici quelques étapes à résoudre : Consultez le journal des erreurs pour déterminer la cause première. Assurez-vous que le compte de service est autorisé à démarrer le service. Vérifiez si les services de dépendance sont en cours d'exécution. Désactivez le logiciel antivirus. Réparez l'installation de SQL Server. Si la réparation ne fonctionne pas, réinstallez SQL Server.

Comment vérifier le numéro de port sqlserver Comment vérifier le numéro de port sqlserver Apr 05, 2024 pm 09:57 PM

Pour afficher le numéro de port SQL Server : Ouvrez SSMS et connectez-vous au serveur. Recherchez le nom du serveur dans l'Explorateur d'objets, cliquez dessus avec le bouton droit et sélectionnez Propriétés. Dans l'onglet Connexion, affichez le champ Port TCP.

Comment récupérer une base de données supprimée accidentellement dans SQLserver Comment récupérer une base de données supprimée accidentellement dans SQLserver Apr 05, 2024 pm 10:39 PM

Si vous supprimez accidentellement une base de données SQL Server, vous pouvez suivre les étapes suivantes pour la récupérer : arrêter l'activité de la base de données ; sauvegarder les fichiers journaux ; vérifier les options de récupération : restaurer à partir d'une sauvegarde ; utiliser DBCC CHECKDB ; outils de fête. Veuillez sauvegarder régulièrement votre base de données et activer la journalisation des transactions pour éviter toute perte de données.

Où est la base de données sqlserver ? Où est la base de données sqlserver ? Apr 05, 2024 pm 08:21 PM

Les fichiers de base de données SQL Server sont généralement stockés à l'emplacement par défaut suivant : Windows : C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux : /var/opt/mssql/data L'emplacement du fichier de base de données peut être personnalisé en modifiant le chemin du fichier de base de données. paramètre.

Analyse comparative de la technologie des bases de données Oracle et DB2 Analyse comparative de la technologie des bases de données Oracle et DB2 Mar 11, 2024 am 09:54 AM

Oracle et DB2 sont deux systèmes de gestion de bases de données relationnelles (SGBDR) bien connus et largement utilisés dans les applications d'entreprise. Dans cet article, nous comparerons les deux technologies de bases de données d'Oracle et DB2 et les analyserons en détail, y compris l'analyse de leurs caractéristiques, performances, fonctions et exemples d'utilisation. 1. Présentation de la technologie de base de données Oracle Oracle est un système de gestion de base de données relationnelle développé par Oracle Corporation aux États-Unis. Il est largement utilisé dans les applications au niveau de l'entreprise et présente des performances et une stabilité élevées.

Comment supprimer sqlserver si l'installation échoue ? Comment supprimer sqlserver si l'installation échoue ? Apr 05, 2024 pm 11:27 PM

Si l'installation de SQL Server échoue, vous pouvez la nettoyer en suivant ces étapes : Désinstaller SQL Server Supprimer les clés de registre Supprimer les fichiers et dossiers Redémarrer l'ordinateur

See all articles