查看简化的 SQL Server查询:
set @userid2=...
SELECT *,
SPLIT = '',
userid2 = @userid2
FROM Comments c
JOIN Users u
ON ...
我正在使用此部分工作代码来执行SP:
await c.QueryAsync<Comment, User, SqlInt, CommentWithSenderAndUserId2>(@"insertCommentByImageId",
(message1, user, myint) => new CommentWithSenderAndUserId2
{
User = user,
Comment = message1,
UserId2 = myint.MyIntValue
},
new {imageid = imageId, userid1 = userid1, comment = comment}, //parms
splitOn: "UserID,split", //splits
commandType: CommandType.StoredProcedure //command type
)
正如您所看到的,我将从Comments
和Users
加上一些int
值返回所有列。
我知道我不能像这样返回int
值,我需要返回一个实体。
这就是为什么我创建了这个虚拟类来保存int
值的原因:
public class SqlInt
{
public int MyIntValue { get; set; }
}
正如您所看到的,它是泛型类型的一部分:
c.QueryAsync<Comment, User, SqlInt, CommentWithSenderAndUserId2>
所以基本上我采取Comment
,User
,SqlInt
并将其全部放入CommentWithSenderAndUserId2
问题出在哪里?
我的虚拟类的int值永远不会被填充,它总是0
(其他实体填充得很好)
I did read this post(正如我在SP中所做的那样)我应该添加一个拆分列,例如:
SELECT *,
SPLIT = '', <----------- Here
userid2 = @userid2
问题
我做错了什么,如何填写myInt值?
答案 0 :(得分:1)
好吧,我发现了我的愚蠢错误
问题是我创建了一个实体来保存int
值,对吗?
public class SqlInt
{
public int MyIntValue { get; set; }
}
该属性的名称为MyIntValue
。如果是这样,为什么我这样做:
SELECT *,
SPLIT = '',
userid2 = @userid2
而不是正确的方法:
SELECT *,
SPLIT = '',
MyIntValue = @userid2 <---- change is here
现在我确实看到了正确的价值。