【问题标题】:mvc3 dapper No mapping exists from modelmvc3 dapper 模型中不存在映射
【发布时间】:2013-08-27 15:15:19
【问题描述】:

我在 dapper 中进行一些编码,我收到错误No mapping exists from object type to an known managed provider native type此错误发生在 myfriends var for小巧玲珑我正在使用 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();

这里会发生什么..

【问题讨论】:

    标签: linq asp.net-mvc-3 dapper


    【解决方案1】:

    myfriendsList&lt;friend&gt;。然后将其作为查询参数传递,即

    new {friendship=myfriends}
    

    与:

    AND profileID=@friendship
    

    现在...@friendship 是什么?它应该如何在这里传递List&lt;friend&gt;?即使 意味着 将对象列表(每个对象都可以具有多个属性)作为单个参数传递是什么意思? (注意:出于这个问题的目的,我忽略了表值参数)

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

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

    或者也许:

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

    【讨论】:

    • myfriends 将有大约 20-50 人的列表,非常感谢 var profileIds = myfriends.Select(x => x.ProfileId) 工作得很好;根据您的经验,您是否认为以这种方式使用的 Dapper 在必须扫描包含大量记录的数据库表时比 Entity 更快?
    • @user 取决于使用的查询、使用的库和使用的技术:但基本上,“是的,我认为这将尽可能快”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2013-08-24
    相关资源
    最近更新 更多