EF DB数据库先行,的理解及其它与原生态SQL之间的互动

本文探讨了Entity Framework的DBFirst方法,详细介绍了如何使用此技术进行数据库操作,并讨论了它与直接使用原生SQL之间的交互和差异。

Entity Framework DBFirst,即(EF DBFirst)的使用


个人理解:微软吧数据库与对象,也就是dal与model两个层合并到了一起了,产生了一个中间件df(Entity Framework),其中的dbfirst,和动软自动生成的代码几乎一样其主要是用linq语句进行查询,插入,更新,删除,分别使用
插入
   HBSIEntities entity = new HBSIEntities();
            /*新建一个T_UserInfo表的实体,
             * 即一个新行,为新行中的每一个字段赋值,
             * 要明白,一个表可以看做一个实体,
             * 表中的一行也可以看做一个实体*/
            T_UserInfo userinforow = new T_UserInfo()
            {
                UserName = "bj",
                Pwd = "123456",
                NickName = "猪八戒",
                Address = "高老庄",
                Sfzh = "123452223333444423"
            };
            /*将新建的行实体添加到表实体中,
             这个操作是在程序层面操作的,
             * 并不会影响到数据库层面*/
            entity.T_UserInfo.AddObject(userinforow);
            /*将程序层面的实体的改变更新到数据源中,
             通过这行代码,就会向数据库中添加一条数据*/
            entity.SaveChanges();

修改
 HBSIEntities entity = new HBSIEntities();
            /*更改表的实体,注意在最后加上了“Id=7”,
             标识要更改实体表T_UserInfo中Id=7的行实体,
             为字段重新赋值即可*/
            T_UserInfo userinforow = new T_UserInfo()
            {
                UserName = "zbj",
                Pwd = "234567",
                NickName = "二师兄",
                Address = "高老庄",
                Sfzh = "123452223333444423",
                Id=7
            };
            /*将改变的行实体附加到表实体中,
             注意此时只是在程序层面对表实体进行更改*/
            entity.T_UserInfo.Attach(userinforow);
            /*使用对象状态管理器ObjectStateManager
             * 标识实体userinforow的状态为“更改”而不是“删除”,
             EntityState有很多枚举值,可以自己查看,一看即懂*/
            entity.ObjectStateManager.ChangeObjectState(userinforow,EntityState.Modified);

            /*将程序层面的实体的改变更新到数据源中,
             通过这行代码,就会更改数据库中对应表中的数据*/
            entity.SaveChanges();


删除

先说删除,和更改很想,只需要改2点。第一是在创建行实体的时候里面只需为Id属性赋值即可,因为我们都是根据主键来删除的,知道别的字段的值没意义;第二就是更改EnrityState的枚举值为Delete即可,见代码

HBSIEntities entity = new HBSIEntities();            
            T_UserInfo userinforow = new T_UserInfo()
            {                
                <span style="color:#ff0000;">Id = 7</span>
            };           
            entity.T_UserInfo.Attach(userinforow);           
            entity.ObjectStateManager.ChangeObjectState(userinforow, <span style="color:#ff0000;">EntityState.Deleted</span>);
            entity.SaveChanges();



如何使用原生态呢,很简单

  ctx.Database.ExecuteNonQuery()

总结,其实偷懒的不二法宝,但是进行复杂查询的时候需要借助sql原生态,比较合适,更新的时候每次更新很多数据,插入的时候也不能做到单独每个表单插入,要很完整的插入,所以说这个中间件能提高开发效率,但是执行效率比较一般,


生成:http://www.myexception.cn/database/1839805.html

原生态sql使用http://www.cnblogs.com/lgx5/p/5854887.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值