EF中的增删改查
在上一篇中简单的介绍了一下有关EF的一些概念,都是小编的一些个人理解,懂的不多,想深入学习的可以从网上查看一些其他资料。 下面紧接着上一篇所说,来从代码上看一下EF容器是如何实现与后台数据库之间的增删改查的。 1.EF包装类 什么是EF包装类呢?举个例子,我们平时用SQL语句写增删改查时,用的都是一些Insert、Update、Delete等语句来实现增删改查,所以
在上一篇中简单的介绍了一下有关EF的一些概念,都是小编的一些个人理解,懂的不多,想深入学习的可以从网上查看一些其他资料。
下面紧接着上一篇所说,来从代码上看一下EF容器是如何实现与后台数据库之间的增删改查的。
1.EF包装类
什么是EF包装类呢?举个例子,我们平时用SQL语句写增删改查时,用的都是一些Insert、Update、Delete等语句来实现增删改查,所以我们把放到EF容器的东东也要做一个标签,来指明这个东东是要添加、更新、还是要删除呢。
正如上图所示就是这么简单的操作,就完成了对数据的增删改查。下面来看一下增删改查的Demo。
2.EF添加和删除操作
<span style="font-family:SimSun;font-size:18px;"> TestEntities db = new TestEntities();
/// <summary>
/// 添加操作
/// </summary>
public void Add()
{
//创建要添加的实体
tree tree = new tree()
{
pName = "第一条数据",
subject = "测试"
};
//创建一个EF容器对象,并获取当前实体对象的状态管理对象
DbEntityEntry<tree> entry = db.Entry<tree>(tree);
//为要添加的对象加上添加的标签
entry.State = System.Data.EntityState.Added;
//执行添加操作
db.SaveChanges();
}
/// <summary>
/// 删除操作
/// </summary>
public void Delete()
{
//创建要添加的实体
tree tree = new tree()
{
pName = "第一条数据",
subject = "测试"
};
//创建一个EF容器对象,并获取当前实体对象的状态管理对象
DbEntityEntry<tree> entry = db.Entry<tree>(tree);
//为要添加的对象加上删除的标签
entry.State = System.Data.EntityState.Deleted;
//执行删除操作
db.SaveChanges();
}</span>
通过上述操作,就通过EF实现了添加和删除的操作。其实还有另外一种写法,原理基本上是一致的。
<span style="font-family:SimSun;font-size:18px;"> TestEntities db = new TestEntities();
/// <summary>
/// 添加操作
/// </summary>
public void Add()
{
//创建要添加的实体
tree tree = new tree()
{
pName = "第一条数据",
subject = "测试"
};
//此语句相当于为该对象加上添加的标签
db.tree.Add(tree);
//执行添加操作
db.SaveChanges();
}
/// <summary>
/// 删除操作
/// </summary>
public void Delete()
{
//创建要添加的实体
tree tree = new tree()
{
pName = "第一条数据",
subject = "测试"
};
//先把要删除的实体放置到容器里面
db.tree.Attach(tree);
//然后打上要删除的标签
db.tree.Remove(tree);
//执行删除操作
db.SaveChanges();
}
</span>
3.查询操作
有了上述的添加和删除,下面来看一下查询的操作。
有关于EF的查询操作,太多了,就好比我们平时写的SQL语句一样,可以查询出各种条件的数据。
因为EF上下文里的 DBSet<T> 里的 标准查询运算符 方法,来自于 System.Linq.Queryable 里给 IQueryable接口 添加的扩展方法。而看一下Queryable类中的方法的话,你会大吃一惊,太强大了,将近有200多个查询的方法供我们使用,下面小编只列举一下简单的查询方法。
<span style="font-family:SimSun;font-size:18px;"> /// <summary>
/// 查询数据
/// </summary>
public void Find()
{
//采用DbQuery接口中方法,来查询数据
DbQuery<tree> info = db.tree as DbQuery<tree>;
//获得查询出来的数据
tree tree = info.FirstOrDefault();
Console.WriteLine(tree.pName);
}</span>
4.EF中的更新操作
如果我们用SQL语句来写更新的话,用到那个字段就更新那个字段,而在EF中还是采用EF包装类的方法,来为我们要修改的类打上修改的标签,然后更新到数据库中。
<span style="font-family:SimSun;font-size:18px;"> TestEntities db = new TestEntities();
/// <summary>
/// 更新操作
/// </summary>
public void Update()
{
//编辑要更新的实体的实体
tree tree = new tree()
{
pName = "第一条数据",
subject = "测试"
};
//将对象添加到EF容器中
DbEntityEntry entry = db.Entry<tree>(tree);
//先设置对象的包装类型为Unchanged
entry.State = System.Data.EntityState.Unchanged;
//为要更新的字段打上更新的标签
entry.Property("pName").IsModified = true;
entry.Property("subject").IsModified = true;
//一次性的更新操作
db.SaveChanges();
}</span>
更多推荐
所有评论(0)