asp.net EF+MVC2实战3

简介:
如果一个存储过程获得的是两张表的联合查询结果,那么我们用EF该如何映射存储过程呢?很简单,再建一个视图。存储过程如下
ALTER     PROCEDURE    [dbo].[getFuncsByUserAuth]     
@strUserId  VARCHAR(32)     
AS  BEGIN    
          SELECT  DISTINCT a.C_MODUL_ID,b.C_FUNCTP_ID,b.C_FUNCTP_NAME,b.C_FUNCTP    
          FROM SS_FUNC a,SS_FUNCTP b 
          WHERE a.C_FUNC_ID  IN 
            ( SELECT  distinct C_FUNC_ID 
              FROM SS_USERAUTH 
              WHERE C_USER_ID = @strUserId    
            ) 
          AND b.C_FUNCTP_ID = a.C_FUNC_ID 
ORDER  BY C_MODUL_ID 

END
 
返回的是两张表的结果。
那么我们在映射存储过程的时候不能指定为具体的某一个实体。而是要指定为一个视图的实体。看下面
这是建的视图,然后我们再看看如何映射存储过程。在edmx设计界面上右键UpDate Model  form Database,选择存储过程,然后再右键
点击model Browser。弹出以下界面
在Function Import 上右键
选择第一项,弹出下面的界面
通过这样的设置就可以把两张表的查询结果通过V_Funcs实体得到。
控制器调用很简单(实体.GetFuncsByUserAuth(用户Id))
最后呢,把我最近项目上遇到的一些问题给大家卡看
首先是List<Object>筛选
public  class EqualLity : IEqualityComparer<SS_CODE> 
                { 
                         public  bool Equals(SS_CODE ssCode1, SS_CODE ssCode2) 
                        { 
                                 return ssCode1.C_ENAME.Equals(ssCode2.C_ENAME) && ssCode1.C_CNAME.Equals(ssCode2.C_CNAME); 
                        } 
 
                         public  int GetHashCode(SS_CODE ssCode) 
                        { 
                                 return ssCode.C_CNAME.GetHashCode(); 
                        } 
                }
codeEntities.SS_CODE.AsEnumerable().Distinct(new EqualLity()).ToList();通过这样就可以获取到C_CNAME和C_ENAME不重复的SS_CODE对象


本文转自 BruceAndLee 51CTO博客,原文链接:http://blog.51cto.com/leelei/348178,如需转载请自行联系原作者

相关文章
|
4月前
|
SQL 程序员
分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子
分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
51 7
|
4月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
100 1
|
4月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
82 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
60 0
|
4月前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
|
4月前
|
程序员 数据库
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
117 0
|
4月前
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
|
4月前
|
SQL 程序员 数据库
总结查看 .NET EF 生成的 SQL 的 3 种方式,亲测可用
总结查看 .NET EF 生成的 SQL 的 3 种方式,亲测可用
134 0