我想在兩個表(BusinessUnit和UserBusinessUnit)上執行簡單連接,因此我可以獲得分配給給定用戶的所有BusinessUnits的列表。subsonic 3簡單查詢內部連接sql語法
第一次嘗試的作品,但沒有選擇的覆蓋,讓我來限制返回的列(我得到的所有列從兩個表):
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);
第二attept使列名的限制,但生成的SQL包含pluralised表名(?)
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
因此,有兩個問題:
- 如何限制方法1中返回的列?
- 爲什麼方法2 pluralise在生成的SQL列名(我可以避開這個問題?)
我使用3.0.0.3 ...