私は以下のように2つのテーブルをデータベースに持っていて、このテーブルに同じ名前のカラムがあります。関連テーブルのページングを行い、大まかなクエリにマップする方法は?
[ユーザー]。[情報]
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
しかし、私は私のプロジェクトでDapperのを使用していますが、私は[ユーザー]を取得したい[情報]と[ユーザー] [タイプ]上記のようにページングとデシベルから。
これは、内側には、クエリに参加する私のスタンダールです:
SELECT TOP 10 * FROM [User].[Info] ui INNER JOIN [User].[Type] ut ON ui.UserTypeId = ut.Id
そして私は、ページングのために、このクエリを試してみました:
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
その結果、私はエラーを取得していますよう:
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'.
テーブルの名前付き列が同じであるためです。この問題を解決するには?
なぜ私はこれをしたいですか?
Dapperコール結果では、EntityFrameworkのようにUserInfoエンティティから到達可能なUserTypeと、同じ列名で問題なくクエリ結果のエンティティにマップする方法を行いたいと思います。
これが今の私のDapperの呼び出しです:)
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;
}
}
は、私は多くのサンプルを見て、私は解決することができませんでした。助けてください!
SQL Serverエラーを解決しShouldnクラス 'UserType'は' CompanyInfoId'というプロパティを持っていますか? – Marusyk
'UserType'クラスに' CompanyInfoId'プロパティがないことを見てください。それは私が尋ねるものです。あなたは 'Name'を持ち、すべての親メンバーからですが、親' CompanyInfoId'にも存在しません。しかしあなたのスキーマによれば、 '[User]。[Type]'は 'CompanyInfoId'フィールドを持っていなければなりません。 – Marusyk
@MegaTron yeah you right!しかし、なぜそれを求めているのですか?わかりません。私はUserTypeでCompanyInfoIdを今必要はない。 – mstfcck