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了,我们是时候操作它来对数据库做增删改查了。动手
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)
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