zoukankan      html  css  js  c++  java
  • Entity Framework 4.1/4.3 之二(前辈Entity Framework4.0) jerry

     

    Entity Framework 4.1/4.3 之二(前辈Entity Framework4.0)

     

      大家好,上个星期太忙了,忙着做定价子系统,没有时间来写Entity Framework 4.1 之二文章,以至于之前的思路突然间断了。刚才泡了杯tea细细的想了想,决定从前辈讲起。接下来我来讲讲Entity Framework 4.0的实例,然后慢慢过度到Entity Framework 4.1的实例。这样对比较强些。

     

          寒暄过后,我们开工。

          一,先建立解决方法 (名称:EFProject)

                我习惯建立控制台应用程序。然后建立好多层。有数据层,接口层,业务层,Model层,Helper层,表示层等等。今天为了讲解方便,我直接就调用数据层了。

                1、数据层开建 (先建 Entity Data Model (EDM),在之一里有介绍,它是数据模型与数据库中表的因映射)

                     右击你要存放EDM的文件(我的文件夹叫DBEntity),添加 -> 新建项 ,选择ADO.NET 实体数据模型,命名为EFEntity,点击确定,欧了,EDM建立完毕。

                     切记要命名啊,命我为EFEntity,然点击“添加”,会出现如下图的“实体数据模型向导”:

                        点击下一步在新出现的页面中,点击“新建连接按钮”:会出现 连接属性 设置窗口,在这里将设置EDM映射的数据库。

                            点击确定后,出现实体数据模型向导,如下图:

                              记得在“将App.Config 中的实体连接设置另存为(S)” 下的文本框内也改为"EFEntity"。其实际的做用是在App.config中会增加一条以EFEntity命名的数据库连接字符串。点击 “完成”,如出下图。

                                   

                                  选好要映射的表,这里要重点强调一下" 型命名空间(M):"  可以到在图中我填的是EFEntity,这样是不对的,因为EDM的名称已经叫做EFEntty了,所以相对应该的映射模型的命名空间就不能再叫EFEntity,否则会出现命名空间冲突。这里我们改成EFModel。点击完成,我们的EDM模型就真正的完成了。是不是很简单。别光看,动手行动起来吧。

                          

                           等等,让我们来看看生成的EDM长什么样吧,双击EFEntity.edmx,会进入到模型浏览器中。如下图所示:

                              

                        这里有 TestEntity和TestEntitySchool 两个模型,分别是对数据库中TestEntity和TestEntity

     

                   2、好了,有了EDM了,我们是时候操作它来对数据库做增删改查了。动手

     

    View Code
     1 public List<TestEntity> GetTestEntity()
     2         {
     3             using (EFEntity db = new EFEntity())
     4             {
     5             
     6                 var query = from m in db.TestEntity
     7                             select m;
     8 
     9                 if (query != null)
    10                     return query.ToList();
    11                 else
    12                     return null;
    13             }
    14         }

     

                这个方法是从TestEntity 表中获取所有的数据,EFEntity 就是我们之前定义的edm,TestEntity就是对数据库TestEntity的映射。

                我们没有专门建立一个Model来做为TestEntity载体,而是直接用模型TestEntity本身来做为我们的载体,这样做有好处也有坏处,如果项目工期短的话,功能本身非常单一并且相对简单的话,不妨可以考虑这么做,比如,提供学校列表,老师列表等等单一功能的情况下较好,如果设及到多表关联的话,这样做非常不好。 

                这种做法没有实现数据与展示分离,而且扩展起来不方便。所以常用的做法是在新建一上Model模型,比如我会新建一个TestEntityM来做为TestEntity的表一。当然命名可以自己去命名。

     

                 大家先别顾忌这种上面说的,先动手练习一下。示列中的代码显示了“查的功能”,我抛砖引玉一下,提代以下几行代码,大家试着根据这几行代码来写写“新增”和“编辑的”功能。至于输出,你可以通过控制台来Console.WriteLine方式输出,也可以通过网页的行式显示。

     

                 提示代码如下:

                   (1) 

    View Code
     1 public int EditEntity(TestEntity tsEntity)
     2         {
     3             int result = 0;
     4             using (EFEntity db = new EFEntity())
     5             {
     6                 var query = (from m in db.TestEntity
     7                              where m.email == tsEntity.email
     8                              select m).FirstOrDefault();
     9 
    10                 if (query == null)
    11                 {
    12                     //这里是新增
    13                     query = new TestEntity();
    14                     //
    15                     //  这里你写你的代码
    16                     //
    17                     db.AddToTestEntity(query);
    18                     result = db.SaveChanges();
    19                 }
    20                 else
    21                 {
    22                     //好了,你来写编辑
    23                 }
    24             }
    25 
    26             return result;
    27         }

     

                

                 也不知道您有没有去练习。实践了的朋友们,留个言吧。

                 说实话,写博客真不是件容易的事,写系列博客更不是件容易的事。坚持,得坚持啊。

                 好了,就写到这里,我会对自己写的博客不断的更新,以便大家更容易理解和阅读。今天就写到这里了,累了。我是jerry百灵,文章中有什么不对的地方,不吝指教。

     

                 补充:本文讲了EF4.1的前辈,也就是EF4.0版,它是伴随着.Net Framework 3.5  出现的。之所以我们要采用ORM方式来编程,是为了更好的将注意力集中在编程上,而不用分散到数据库上。当然早期的EF,也就是EF4.0 之前,我们还需要先设计数据库,设计表,但是在EF4.1 里,推出一Code First (即代码先行),我们可以先构建对象及对象间关系。这里的对象你把它理解成数据库中的表这样更好理解些,事实上它也却实是对表的映射。把精力集中在业务解决上,这样不是更好吗?

     

    百灵注:本文版权由百灵和博客园共同所有,转载请注明出处。
    助人等于自助!  mbailing@163.com

  • 相关阅读:
    noip2014Day2解题报告
    浴谷八连测R4
    pythonic-让python代码更高效
    java源码学习(一)String
    湖北省汉十高速公路项目接近尾声,所想所感真的值得写写
    jQuery插件ImageBox的使用
    那位兄弟帮忙写个正则表达式哦!急用阿
    如何在页面调用JS函数的代码
    控件的EnableViewState详细分析
    某人给gridview如此集中数据源,我只用过几个,晕倒!!
  • 原文地址:https://www.cnblogs.com/mbailing/p/2551004.html
Copyright © 2011-2022 走看看