Préfixe chaque nom de colonne avec une string spécifique?

J'essaie de mapper manuellement certaines lignes aux instances de leurs classs appropriées. Je sais que je dois utiliser chaque colonne de chaque table, et mapper toutes ces colonnes d'une table dans une class donnée.

Cependant, je me demandais s'il y aurait un moyen plus facile de le faire. En ce moment, j'ai une class appelée School et une class appelée User . Chacune de ces classs a une propriété Name , et d'autres propriétés (mais celle de 'Nom' est la plus importante, puisqu'il s'agit d'un nom commun pour les deux classs).

En ce moment, je fais ce qui suit pour les cartographier.

SELECT u.SomeOtherColumn, u.Name AS userName, s.SomeOtherColumn, s.Name AS schoolName FROM User AS u INNER JOIN School AS s ON something

J'aimerais faire ce qui suit, mais je ne peux pas, puisque le Name est un nom mutuel entre les classs.

SELECT u.*, s.* FROM User AS u INNER JOIN School AS s ON something

Cela génère cependant une erreur, car ils ont tous deux la colonne Name . Puis-je les préfixer d'une manière ou d'une autre? Comme ceci par exemple?

u.user_*, s.school_*

Alors que chaque colonne de chacune de ces tables a un préfixe? Par exemple user_Name et school_Name ?

Il y a quelques années, j'ai écrit un tas de fonctions et de procédures pour m'aider à développer des routines de génération automatique de code pour les servers SQL et les applications utilisant le SQL dynamic. Voici celui qui, selon moi, serait le plus utile à votre situation:

 Create FUNCTION [dbo].[ColumnSsortingng2] ( @TableName As SYSNAME, --table or view whose column names you want @Template As NVarchar(MAX), --replaces '{c}' with the name for every column, @Between As NVarchar(MAX) --puts this ssortingng between every column ssortingng ) RETURNS NVarchar(MAX) AS BEGIN DECLARE @str As NVarchar(MAX); SELECT TOP 999 @str = COALESCE( @str + @Between + REPLACE(@Template,N'{c}',COLUMN_NAME), REPLACE(@Template,N'{c}',COLUMN_NAME) ) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA= COALESCE(PARSENAME(@TableName, 2), N'dbo') And TABLE_NAME = PARSENAME(@TableName, 1) ORDER BY ORDINAL_POSITION RETURN @str; END 

Cela vous permet de mettre en forme tous les noms de colonnes d'une table ou de les visualiser comme vous le souhaitez. Il suffit de lui passer un nom de table et une string Modèle avec '{c}' partout où vous voulez insert le nom de la colonne pour chaque colonne. Il le fera pour chaque colonne de @TableName , et appenda la string @Between entre eux.

Voici un exemple de formatting vertical de tous les noms de colonnes pour une table, en les renommant avec un préfixe d'une manière qui peut être incluse dans une requête SELECT:

 SELECT dbo.[ColumnSsortingng2](N'yourTable', N' {c} As prefix_{c}', N',') 

Cette fonction était destinée à être utilisée avec du SQL dynamic, mais vous pouvez également l'utiliser en l'exécutant dans Management Studio avec votre sortie définie sur Texte (au lieu de Grille). Ensuite, coupez et collez la sortie dans la requête souhaitée, affichez ou codez le text. (Assurez-vous de modifier vos options de requête SSMS pour les résultats de text afin d'élever le " nombre maximum de caractères affichés " de 256 au maximum (8000) .Si cela est encore tronqué pour vous, vous pouvez changer cette procédure en une fonction sort chaque colonne comme une ligne distincte, au lieu d'une seule grande string.)