我有其經由dapper.net問題與spliton加入
var resultList = sqlCon.Query<UserProfile, UserAddress, UserProfile>(@"
UPDATE [User].[User_Profile]
SET ProfileStatus = 4
WHERE Id = @UserId
SELECT u.Id [UserId], u.Username, u.Age,
u.ProfileStatus,
a.Id [AddressId], a.Country, a.[State], a.City,
a.Latitude, a.Longitude
FROM [User].[User_Profile] u
INNER JOIN [User].[User_Address] a on u.id = a.UserId
WHERE u.Id = @UserId", (u, a) =>
{
u.Id = a.UserId;
return u;
},
new { UserId = userId }, splitOn: "UserId").FirstOrDefault();
運行時,它我收到此錯誤執行以下SQL查詢:
當使用多映射的API確保您設置的splitOn PARAM如果你有多個id其他鍵「」 splitOn
我的兩個班分別爲:
首先是即時通訊試圖將USERPROFILE填充
public class UserProfile
{
public Int64 UserId { get; set; }
public string UserName { get; set; }
public int Age { get; set; }
public int ProfileStatus { get; set; }
public Int64 AddressId { get; set; }
public int Country { get; set; }
public int State { get; set; }
public int City { get; set; }
public decimal Latitude { get; set; }
public decimal Longitude { get; set; }
}
,這是我的用戶地址類:
public class UserAddress
{
public Int64 Id { get; set; }
public Int64 UserId { get; set; }
public int Country { get; set; }
public int State { get; set; }
public int Town { get; set; }
public string PostCode { get; set; }
public decimal Latitude { get; set; }
public decimal Longitude { get; set; }
}
我不知道我在做什麼錯了,因爲我覺得我已經說的用戶ID拆分?但顯然這似乎並非如此?
**用別名
SELECT u.Id as [UserId], u.Username as [Username], u.Age as [Age],
u.ProfileStatus as [ProfileStatus],
a.Id as [AddressId], a.Country as [Country], a.[State] as [State],
a.City as [City], a.Latitude as [Latitude], a.Longitude as [Longitude]
FROM [User].[User_Profile] u
INNER JOIN [User].[User_Address] a on u.id = a.UserId
WHERE u.Id = @UserId", (u, a) =>
{
u.UserId = a.UserId;
return u;
},
new { UserId = userId }, splitOn: "AddressId").FirstOrDefault();
「SplitOn」不正確,因爲UserId是查詢中的第一列。您必須提供從第二個表中分隔第一個表/類的列。這似乎是'AddressId',不是嗎? –
自從我和Dapper一起工作已經有一段時間了,但是不應該在「AddressId」上分裂嗎? – rikitikitik