2009-07-29 6 views
1

두 테이블 (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에서 반환 된 열을 어떻게 제한합니까?
- 생성 된 SQL에 열 이름 pluralise 방법 2를 수행합니다 (그리고 나는이 피해 갈 수 있습니까?) 나는 3.0.0.3을 사용하고

... 3.0.0.3와

답변

2

지금까지 내 경험을하는 이유

var busUnits = from b in BusinessUnit.All() 
join u in UserBusinessUnit.All() on b.Id equals u.BusinessUnitId 
select b; 
:이 버전이지만이 2

내가 버전 3으로 선호되는 방법은 (지금까지) 같은 것을 함께 LINQ 쿼리를 사용하는 것입니다 생각, 쿼리 도구를 사용하여 아직 불가능하다고 제안

1

나는 복수형을 만났다. d 테이블 이름을 직접 지정하지만 스키마를 변경 한 후에 하나의 템플릿 만 다시 실행하기 때문입니다.

일단 모든 템플릿을 다시 실행하면 복수 테이블 이름이 사라집니다.

4 개의 템플릿을 모두 다시 실행하여 문제가 해결되는지 확인해보십시오.