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

 

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

posted @ 2012-06-15 19:09  jerry-Tom  阅读(3299)  评论(16编辑  收藏  举报