Je souhaite effectuer une jointure simple sur deux tables (BusinessUnit et UserBusinessUnit), afin que je puisse obtenir une liste de tous les BusinessUnits alloués à un utilisateur donné.Subsonic 3 Simple Query syntaxe de jointure interne
La première tentative fonctionne, mais il n'y a pas override de Select qui me permet de limiter les colonnes retournées (je reçois toutes les colonnes des deux tables):
var db = new KensDB();
SqlQuery query = db.Select
.From<BusinessUnit>()
.InnerJoin<UserBusinessUnit>(BusinessUnitTable.IdColumn, UserBusinessUnitTable.BusinessUnitIdColumn)
.Where(BusinessUnitTable.RecordStatusColumn).IsEqualTo(1)
.And(UserBusinessUnitTable.UserIdColumn).IsEqualTo(userId);
La deuxième attept permet la restriction de nom de la colonne, mais le SQL généré contient les noms de table pluralisés (?)
SqlQuery query = new Select(new string[] { BusinessUnitTable.IdColumn, BusinessUnitTable.NameColumn })
.From<BusinessUnit>()
.InnerJoin<UserBusinessUnit>(BusinessUnitTable.IdColumn, UserBusinessUnitTable.BusinessUnitIdColumn)
.Where(BusinessUnitTable.RecordStatusColumn).IsEqualTo(1)
.And(UserBusinessUnitTable.UserIdColumn).IsEqualTo(userId);
... produit
SELECT [BusinessUnits].[Id], [BusinessUnits].[Name]
FROM [BusinessUnits]
INNER JOIN [UserBusinessUnits]
ON [BusinessUnits].[Id] = [UserBusinessUnits].[BusinessUnitId]
WHERE [BusinessUnits].[RecordStatus] = @0
AND [UserBusinessUnits].[UserId] = @1
Donc, deux questions:
- Comment limiter les colonnes retournées dans la méthode 1?
- Pourquoi Does method 2 pluralise les noms de colonnes dans la SQL généré (et puis-je contourner cela?)
J'utilise 3.0.0.3 ...