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>筛选
InBlock.gif public  class EqualLity : IEqualityComparer<SS_CODE> 
InBlock.gif                { 
InBlock.gif                         public  bool Equals(SS_CODE ssCode1, SS_CODE ssCode2) 
InBlock.gif                        { 
InBlock.gif                                 return ssCode1.C_ENAME.Equals(ssCode2.C_ENAME) && ssCode1.C_CNAME.Equals(ssCode2.C_CNAME); 
InBlock.gif                        } 
InBlock.gif 
InBlock.gif                         public  int GetHashCode(SS_CODE ssCode) 
InBlock.gif                        { 
InBlock.gif                                 return ssCode.C_CNAME.GetHashCode(); 
InBlock.gif                        } 
InBlock.gif                }
codeEntities.SS_CODE.AsEnumerable().Distinct(new EqualLity()).ToList();通过这样就可以获取到C_CNAME和C_ENAME不重复的SS_CODE对象


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

相关文章
|
2月前
|
开发框架 前端开发 .NET
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
|
2月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
112 0
|
2月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
62 0
|
2月前
|
开发框架 .NET 中间件
七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
|
1月前
|
SQL 开发框架 .NET
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
|
2月前
|
开发框架 .NET C#
使用C#进行.NET框架开发:深入探索与实战
【5月更文挑战第28天】本文探讨了C#在.NET框架中的应用,展示了其作为强大编程语言的特性,如类型安全、面向对象编程。C#与.NET框架的结合,提供了一站式的开发环境,支持跨平台应用。文中介绍了C#的基础知识,如数据类型、控制结构和面向对象编程,以及.NET的关键技术,包括LINQ、ASP.NET和WPF。通过一个实战案例,展示了如何使用C#和ASP.NET开发Web应用,包括项目创建、数据库设计、模型和控制器编写,以及视图和路由配置。本文旨在揭示C#在.NET开发中的深度和广度,激发开发者探索更多可能性。
|
2月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
47 0
|
2月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
184 5
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
2月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css