vs2012中对于entity framework的使用
很久之前就听说过微软entity framewor的强大与便利,今天终于不手懒了,动手写了一些东西,但也遇到了一些问题。
实践步骤:
1.首先在vs2012中新建一个控制台应用程序
2.在项目中添加一个ado.net实体数据模型
3.在生成的空的ado.net实体数据模型界面中,设计数据表,并设置它们之间的关系。
4.右键“从模型生成数据库”,在这一步出了问题,始终没有直接生成成功(在低版本vs中一路顺风,没出现这问题),但是脚本生成是正确的,于是乎,直接用脚本在数据库中执行生成了。。。。(此处没搞明白,求大神指点)
5.在低版本的中习惯了看自动生成代码中生成的“数据上下文”和“实体类”了,今晚手贱了一把,微软默认的将“代码生成策略”定为无,我改成了“默认设置”,结果,提示各种重复,想了一下,明白了,是自己画蛇添足了,果断将“代码生成策略”改回无,ok,运行成功。
一:插入操作:
1 EducationEntitiesmode ef = new EducationEntitiesmode();//实例化上下文 2 3 banji bj = new banji();//实例化实体类 4 bj.ID = 123; 5 bj.Number = 124;//给实体类的每个字段赋值 6 ef.Class集.Add(bj);//将实体类实例化的对象附加到相应的实体集中 7 ef.SaveChanges();
二:修改操作
1 EducationEntitiesmode ef = new EducationEntitiesmode(); 2 banji bj=new banji(); 3 bj.ID=654; 4 bj.Number=852; 5 ef.Class集.Attach(bj); 6 //ef.ObjectStateManager.ChangeObjectState(bj, EntityState.Modified); 7 ef.Entry(bj).State = System.Data.EntityState.Modified; 8 ef.SaveChanges();
可以看到,上面有一行是被注释掉的,相信用过低版本的同学一定很熟悉那句话,但在2012中却变的坑爹的消失了。查了一堆资料,好多人说要引用System.Data.Objects,好吧,我水了,找遍了引用都没看到这个引用。但是问题还不是得解决么。。。最后,两种解决办法:1.用注释掉那句的下边那句话来代替2.自己降级吧,从高版本的vs习惯奖回到低版本的vs习惯。就是删除文件下的所有.tt文件,然后,然后就是我在上边“画蛇添足”干的那件事情,把“代码生成策略”改为默认,ok,恭喜你回到你熟悉的entity framework.
三:查找多条记录
1 EducationEntitiesmode ef = new EducationEntitiesmode(); 2 var db = from c in ef.Class集 3 where c.ID > 123 4 select c; 5 foreach (var item in db) 6 { 7 //循环输出; 8 }
四:查找一条记录
1 EducationEntitiesmode ef = new EducationEntitiesmode(); 2 var db = (from c in ef.Class集 3 where c.ID == 123 4 select c).FirstOrDefault();
五:删除一条记录
EducationEntitiesmode ef = new EducationEntitiesmode(); banji bj = new banji(); bj.ID = 654; ef.Class集.Attach(bj); ef.Entry(bj).State = System.Data.EntityState.Deleted; ef.SaveChanges();
暂时就这些简单操作吧。自己的第一次entity framework,Mark一下,继续对ORM的学习。