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,如需转载请自行联系原作者

相关文章
|
9月前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
593 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
426 18
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
280 1
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
299 7
|
消息中间件 开发框架 .NET
.NET 8 强大功能 IHostedService 与 BackgroundService 实战
【11月更文挑战第7天】本文介绍了 ASP.NET Core 中的 `IHostedService` 和 `BackgroundService` 接口及其用途。`IHostedService` 定义了 `StartAsync` 和 `StopAsync` 方法,用于在应用启动和停止时执行异步操作,适用于资源初始化和清理等任务。`BackgroundService` 是 `IHostedService` 的抽象实现,简化了后台任务的编写,通过 `ExecuteAsync` 方法实现长时间运行的任务逻辑。文章还提供了创建和注册这两个服务的实战步骤,帮助开发者在实际项目中应用这些功能。
697 0
|
测试技术 API 开发者
.NET单元测试框架大比拼:MSTest、xUnit与NUnit的实战较量与选择指南
【8月更文挑战第28天】单元测试是软件开发中不可或缺的一环,它能够确保代码的质量和稳定性。在.NET生态系统中,MSTest、xUnit和NUnit是最为流行的单元测试框架。本文将对这三种测试框架进行全面解析,并通过示例代码展示它们的基本用法和特点。
1797 8
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
387 2
|
开发框架 缓存 前端开发
实战.NET Framework 迁移到 .NET 5/6
从.NET Framework 迁移到.NET 5/6 是一次重要的技术革新,涵盖开发环境与应用架构的全面升级。本文通过具体案例详细解析迁移流程,包括评估现有应用、利用.NET Portability Analyzer 工具识别可移植代码、创建新项目、逐步迁移代码及处理依赖项更新等关键步骤。特别关注命名空间调整、JSON 序列化工具更换及数据库访问层重构等内容,旨在帮助开发者掌握最佳实践,确保迁移过程平稳高效,同时提升应用性能与可维护性。
461 2
|
敏捷开发 设计模式 开发者
【揭秘终极利器】AgileEAS.NET:服务定位器模式的魔法,如何让企业级软件开发瞬间提速?揭秘背后的技术奥秘与实战指南!
【8月更文挑战第16天】AgileEAS.NET是基于DotNet的企业级敏捷开发平台,其服务定位器模式助力构建高度解耦系统。通过全局服务目录动态查找服务,避免硬编码依赖。在AgileEAS.NET中,服务定位器以静态类形式封装服务注册与检索功能。示例展示了如何注册与获取服务实例,如在`UserController`中通过服务定位器使用`IUserService`。此模式整合到框架生命周期管理,便于各处获取服务实例,提升开发效率。然而,应适度使用并考虑依赖注入容器以增强代码可维护性和可测试性。
276 4
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
319 0