Search code examples
linqasp.net-mvc-3dapper

mvc3 dapper No mapping exists from model


I am doing some coding in dapper and I get the error No mapping exists from object type to a known managed provider native type this error occurs on the myfriends var for dapper . I am using dapper to get a list of INT values from a table then comparing them against another.. this is the code that gives me that error

   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();

however if I use entity everything works fine for instance this code below works..

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

What could be going on here..


Solution

  • myfriends is a List<friend>. You then pass that in as a query parameter, i.e.

    new {friendship=myfriends}
    

    with:

    AND profileID=@friendship
    

    Now... what is @friendship ? How should it pass in a List<friend> here? What does that even mean to pass in a list of objects (each of which could have multiple properties) as a single parameter? (note: I'm ignoring table-valued-parameters for the purposes of this question)

    So: how many myfriends do you expect? 0? 1? any number? This could be, for example:

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

    or maybe:

    new {profileId = myfriends.Single().ProfileId}
    ...
    AND profileID = @profileId