博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net EF+MVC2实战2
阅读量:6711 次
发布时间:2019-06-25

本文共 1452 字,大约阅读时间需要 4 分钟。

今天讲讲怎么用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,如需转载请自行联系原作者

你可能感兴趣的文章