我们一般对数据主要有增删查以及更新这几中基本操作形式,本文就以前面的文章中的代码为例,简单的介绍一下在Entity Framework中基本操作的使用方法。
查询
1. 通过linq语句查询
var query = from b in db.Blogs
where b.BlogId == 1 && b.Name == "my blog"
select b;
var blog = query.FirstOrDefault();
这种方式的好处是可以类似Sql语句一样使用非常复杂的查询条件,对于复杂的查询来说非常给力。
2. 使用Find函数通过主键查询
var blog = db.Blogs.Find(1);
这种方式类似于字典式的查询,通过主键查询到数据;是我们使用过程中用得最多的一种方式。在使用Find查询时,如果指定的主键无法查询到结果,则返回null,不会抛异常。
添加:
db.Blogs.Add(new
Blog() { BlogId = 2, Name = "test2" });
db.SaveChanges();
添加操作和我们操作集合是一样的,不过这里需要调用一下SaveChanges函数将变更保持到数据库。
更新:
var blog = db.Blogs.Find(1);
blog.Name = "test1";
db.SaveChanges();
更新分为三步:查询数据、修改数据、保存结果;还是比较简单的。
删除:
var blog = db.Blogs.Find(1);
db.Blogs.Remove(blog);
db.SaveChanges();
删除也是分为三步:查询数据、删除数据、保存结果。需要注意的是,如果在Remove中传入null函数,则会抛异常。
批量删除和批量更新:
批量删除和批量更新在我们常规的集合操作中基本上用不到,但在Sql操作中却是一个非常常见的操作。从理论上来讲我们可以通过Lambda表达式非常优雅的实现这一操作,但EntityFramework却不支持,只能通过执行sql语句来删除。这也是EntityFramework的一个一直被人诟病的地方。
不过得益于C#灵活而强大的语法,已经有人通过扩展函数来实现这一功能,感兴趣的可以看下老赵的使用Lambda Expression批量删除数据这篇文章,我这里就不多讲了。