asp.net EF+MVC2实战2

简介:
今天讲讲怎么用EF建立实体之间的对应关系,以及对应的数据库操作,首先看看实体,这个也是项目中碰到的问题。
FUNC_SS_MODULE表有连个关系,一个是自身对应关系,一个是和SS_FUNC的对应关系。那么接下来我们看看这个自身一对多和外部一对多是怎么建立的。
先看看自身一对多,FUNC_SS_MODULE表中有两个字段C_MODUL_ID和C_FATHERID,我不用说,大家都能才出来一个是子模块一个是父模块。看看数据表
看见了吧,废话不多说,我们看看关系的建立
ok,我们再看看它们的依赖关系
就这么简单,建成了自身的一对多关系。即一个C_FATHER_ID对应多个C_MODULE_ID。看看程序是怎么实现和运用的。因为SubModule是一个集合
所以我们得到一个父Id的时候,根据父ID我们就能轻而易举的获取父Id对应的所有子Id。
InBlock.gifList<Func_SS_MODUL> subModule =  new List<Func_SS_MODUL>(ssModul.SubModule);
其中ssModul是父模块对象。通过这种方式我们就得到了子模块,无需编程根据父模块去找子模块,这就是关系的方便之处。接下来我们再看看外部一对多。
再看看依赖关系
看看程序是怎么实现的。
InBlock.gif if (funcList.Count == 0) 
InBlock.gif                                { 
InBlock.gif                                        ssNewFunc.C_FUNC_ID = Guid.NewGuid().ToString().Replace( "-",""); 
InBlock.gif                                        ssNewFunc.C_FUNC_TP = ssFuncTp.C_FUNCTP; 
InBlock.gif                                        ssNewFunc.C_FUNC_TPNM = ssFuncTp.C_FUNCTP_NAME; 
InBlock.gif                                        ssNewFunc.C_LASTMODIFIER =  base.GetSession().C_USER_ID; 
InBlock.gif                                        ssNewFunc.C_OWNED_DEPT =  base.GetSession().C_ORGA_ID; 
InBlock.gif                                        ssNewFunc.C_OWNER =  base.GetSession().C_USER_ID; 
InBlock.gif                                        ssNewFunc.D_CREATE_DATE = DateTime.Now; 
InBlock.gif                                        ssNewFunc.D_LASTMODIFY = DateTime.Now; 
InBlock.gif                                         string cModuleId = ssFunc.C_MODUL_ID.Equals("") ? CONS_ROOT_ID : ssFunc.C_MODUL_ID; 
InBlock.gif                                        ssNewFunc.Func_SS_MODUL = funcEntities.SS_MODUL.First(m => m.C_MODUL_ID == cModuleId); 
InBlock.gif                                        funcEntities.AddToSS_FUNC(ssNewFunc); 
InBlock.gif                                        funcEntities.SaveChanges(); 
InBlock.gif                                        strJson =  "{suc:1,msg:'保存模块功能成功'}"
InBlock.gif                                        log.Info( "保存模块功能成功"); 
InBlock.gif                                         return Json(strJson); 
InBlock.gif                                }

通过指定Func_SS_MODUL 我们在保存ssNewFunc的时候,系统会根据关系自动将对应的模块Id保存到SS_FUNC表。怎么样很简单吧。篇幅有限,谁想了解多对多请联系我。



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


相关文章
|
1月前
|
SQL 开发框架 数据可视化
企业应用开发中.NET EF常用哪种模式?
企业应用开发中.NET EF常用哪种模式?
|
3月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
68 0
|
3月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
37 0
|
3月前
|
开发框架 JSON JavaScript
ASP.NET Core3.1实战教程---基于Jquery单文件上传
ASP.NET Core3.1实战教程---基于Jquery单文件上传
26 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
29天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
30天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 前端开发 .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,然后在重定向到另
95 5
|
1月前
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
149 2
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0