아래 표와 같이 두 개의 테이블이 있으며이 테이블에 같은 이름의 열이 있습니다.관련 테이블에서 페이징을 수행하고 더 이상 쿼리에 매핑하는 방법은 무엇입니까?
[사용자]. [정보]
TABLE_SCHEMA TABLE_NAME COLUMN_NAME
User Info Id
User Info UniqueId
User Info Name
User Info Email
User Info CompanyInfoId
User Info UserTypeId
User Info LanguageId
User Info InsertedBy
User Info InsertedOn
User Info UpdatedBy
User Info UpdatedOn
User Info DeletedBy
User Info DeletedOn
User Info IsDeleted
[사용자]. [유형]
TABLE_SCHEMA TABLE_NAME COLUMN_NAME
User Type Id
User Type UniqueId
User Type Name
User Type CompanyInfoId
User Type LanguageId
User Type InsertedBy
User Type InsertedOn
User Type UpdatedBy
User Type UpdatedOn
User Type DeletedBy
User Type DeletedOn
User Type IsDeleted
는 내 쿼리에 대한 SQL에서 페이징을 수행합니다. 테이블 하나에 문제가 없습니다. 나는 아래와 같은 것을 수행 할 수 있습니다.
DECLARE @Page AS INT = 1
DECLARE @PageSize AS INT = 10
SELECT TOP (@PageSize) Paged.* FROM (SELECT ROW_NUMBER() OVER (ORDER BY Id) AS Row, * FROM [User].[Info]) AS Paged WHERE Row > (@Page - 1) * @PageSize
하지만 내 프로젝트에 말끔를 사용하고 그리고 내가 [사용자]를 얻으려면 [정보] 및 [사용자] [유형] 위와 같이 페이징 DB에서.. 이것은 내 STANDART 내부입니다
는쿼리 조인
SELECT TOP 10 * FROM [User].[Info] ui INNER JOIN [User].[Type] ut ON ui.UserTypeId = ut.Id
그리고 페이징이 쿼리를 시도 :
Msg 8156, Level 16, State 1, Line 102
The column 'Id' was specified multiple times for 'Paged'.
Msg 207, Level 16, State 1, Line 100
Invalid column name 'Paged'.
: 나는이 같은 오류를 얻고 그 결과
DECLARE @Page AS INT = 1
DECLARE @PageSize AS INT = 10
SELECT TOP (@PageSize) Paged FROM (
SELECT ROW_NUMBER() OVER (ORDER BY ui.Id) AS RowNumber, ui.*, ut.* FROM [User].[Info] ui INNER JOIN [User].[Type] ut ON ui.UserTypeId = ut.Id
) AS Paged WHERE RowNumber > (@Page - 1) * @PageSize
테이블의 이름이 같은 열이 있기 때문에. 이 문제를 해결하는 방법?
왜 이렇게하고 싶습니까?
dapper 호출 결과에서 EntityFramework와 같은 UserInfo 엔티티에서 도달 UserType을 원하고 동일한 열 이름에서 아무 문제없이 쿼리 결과의 엔티티에 매핑하는 방법을 원합니다.
이 지금은 내 말끔 전화입니다 :)
public IEnumerable<UserInfo> All()
{
using (IDbConnection db = CreateConnection())
{
var sql = "MY SQL QUERY WITH PAGING";
var command = db.Query<UserInfo, UserType, UserInfo>(sql, (userInfo, userType) =>
{
userInfo.UserType = userType;
return userInfo;
});
return command;
}
}
나는 샘플을 많이 보았다하지만 난 해결할 수 있습니다. 도와주세요!
Shouldn를 해결한다 'UserType' 클래스는'CompanyInfoId' 속성을 갖고 있습니까? – Marusyk
클래스'UserType'을 보면'CompanyInfoId' 속성이 없습니다. 그것이 내가 묻는 것이다. 당신은'Name'을 가지고 있고 부모 멤버들 모두는 부모 인'CompanyInfoId'에도 존재하지 않습니다. 그러나 당신의 스키마에 따르면'[User]. [Type]'은'CompanyInfoId' 필드를 가져야합니다. – Marusyk
@MegaTron yeah right! 그런데 왜 그걸 묻는거야? 나는 이해하지 못한다. 나는 지금 UserType에 CompanyInfoId가 필요 없다. – mstfcck