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