asp.net-mvc-4 – Dapper多对多查询
发布时间:2020-12-16 06:39:01 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试编写一个查询来让系统中的用户拥有他/她的所有角色.用户和角色之间存在多对多关系. joiner表是SystemUserUserRole,其中包含UserId和RoleId列.我的模型如下: SystemUser模型 [Key]public int UserId { get; set; }[Required][MaxLength(75)]public
我正在尝试编写一个查询来让系统中的用户拥有他/她的所有角色.用户和角色之间存在多对多关系. joiner表是SystemUserUserRole,其中包含UserId和RoleId列.我的模型如下:
SystemUser模型 [Key] public int UserId { get; set; } [Required] [MaxLength(75)] public string FirstName { get; set; } [Required] [MaxLength(75)] public string LastName { get; set; } [Required] [MaxLength(15)] public string Phone { get; set; } [Required] [MaxLength(250)] public string Email { get; set; } public virtual List<UserRole> UserRoles { get; set; } UserRole模型 [Key] public int RoleId { get; set; } [Required] [MaxLength(250)] public string RoleName { get; set; } public virtual List<SystemUser> SystemUsers { get; set; } 我想在下面做一些没有运气的事情.关于我做错了什么的任何建议. string query = "SELECT u.*,r.* FROM SystemUser u INNER JOIN SystemUserUserRole ur ON u.UserId = ur.UserId INNER JOIN UserRole r on ur.RoleId = r.RoleId WHERE Email = @email AND IsActive = true;"; SystemUser user = con.Query<SystemUser,UserRole,SystemUser>(query,(SystemUser,UserRole) => { SystemUser.UserRoles = UserRole; return SystemUser; }).First(); 解决方法
这将有效:
在SystemUser类中,添加一个初始化列表的构造函数: public SystemUser() { UserRoles = new List<UserRole>(); } 然后告诉Dapper,对于每个连接的行,UserRole应该添加到SystemUser.UserRoles: SystemUser user = con.Query<SystemUser,UserRole) => { SystemUser.UserRoles.Add(UserRole); return SystemUser; },splitOn: "RoleId").First(); 请注意,最后一部分是添加splitOn参数,因为Dapper期望将标识列命名为Id,否则您需要明确地告诉它列名. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – ASP.NET Webforms中的成员资格提供程序与
- asp.net-mvc – Asp.net Mvc自定义机制来处理未经授权的请求
- asp.net-mvc – 如何使用ASP.NET Razor语法应用bootstrap v
- asp-classic – 从Classic ASP执行存储过程
- 服务器NLog日志无法正常写入或者只能部分写入
- asp.net-mvc-3 – ASP.NET MVC 3和App_Code文件夹
- asp.net – 密码保护Elmah.axd文件
- asp.net-mvc – ie9:调试时出现恼人的弹出:“错误:’__f
- 实时监控ASP.NET Web应用程序的工具和方法?
- asp.net-mvc – 如何在MVC 4.0 Razor中进行授权
推荐文章
站长推荐
- asp.net-web-api2 – 在WebAPI2项目中加载System
- asp.net – 禁用web.config继承?
- asp.net-mvc – 什么是上下文?
- asp.net – 在Visual Studio中禁用浏览器链接选项
- asp.net-mvc – asp.net mvc – 需要存储当前请求
- asp.net-membership – ASP.NET成员资格 – 登录
- asp.net-mvc – 无法导出Kendo Grid中的隐藏列
- asp.net-mvc-3 – 如何从MVC 3和IIS7提供汇编嵌入
- asp.net – 对齐和填充为asp:CheckBoxList
- asp.net服务器负载均衡设置 – 它如何影响会话
热点阅读