2つのテーブル(BusinessUnitとUserBusinessUnit)で単純な結合を実行したいので、特定のユーザーに割り当てられたすべてのBusinessUnitのリストを取得できます。
最初の試みは機能しますが、返される列を制限できるSelectのオーバーライドはありません(両方のテーブルからすべての列を取得します)。
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 );
2番目の試みでは列名の制限が許可されていますが、生成されたSQLには複数のテーブル名(?)が含まれています
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 );
生産する...
SELECT [BusinessUnits].[Id], [BusinessUnits].[Name]
FROM [BusinessUnits]
INNER JOIN [UserBusinessUnits]
ON [BusinessUnits].[Id] = [UserBusinessUnits].[BusinessUnitId]
WHERE [BusinessUnits].[RecordStatus] = @0
AND [UserBusinessUnits].[UserId] = @1
したがって、2つの質問:
-メソッド1で返される列を制限するにはどうすればよいですか?
-メソッド2が生成されたSQLの列名を複数形にするのはなぜですか(これを回避できますか?)
私は3.0.0.3を使用しています...