0

我正在 dapper 中进行一些编码,我收到错误No mapping exists from object type to a known managed provider native type此错误发生在myfriends var for dapper 上。我正在使用 dapper 从表中获取 INT 值列表,然后将它们与另一个进行比较.. 这是给我该错误的代码

   int myid = Convert.ToInt32(User.Identity.Name);
 // The var myfriend is giving me that error above
            var myfriends = sqlConnection.Query<friend>("Select otherfriendsID from friends where profileID=@myidd", new { myidd = myid }).ToList();

            var profiles = sqlConnection.Query<profile>("Select top 40 * from profiles where photo is not null AND profileID=@friendship order by profileID desc", new {friendship=myfriends}).ToList();

但是,如果我使用实体一切正常,例如下面的代码可以工作..

            var myfriends = (from s in db.friends where s.profileID == myid select s.otherfriendsID).ToList();

这里可能发生什么..

4

1 回答 1

1

myfriends是一个List<friend>。然后您将其作为查询参数传递,即

new {friendship=myfriends}

和:

AND profileID=@friendship

现在……什么是@friendship?它应该如何通过List<friend>这里?这甚至意味着将对象列表(每个对象可能具有多个属性)作为单个参数传递?(注意:出于这个问题的目的,我忽略了表值参数)

所以:myfriends你期望有多少?0? 1?任何数字?例如,这可能是:

var profileIds = myfriends.Select(x => x.ProfileId);
...
new {profileIds}
...
AND profileID in @profileIds

或者可能:

new {profileId = myfriends.Single().ProfileId}
...
AND profileID = @profileId
于 2013-08-27T15:41:03.957 回答