Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
转载
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended
也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对IQueryable<T>的扩展,而不是DbSet<T>(已经标记为弃用),所以跟我一样有隔离癖好的就可以大胆使用了。下面介绍如何批量删除、更新、查询。
批量删除
本来我们需要这样删除
context.Remove(context.Users.First(u=>u.Key==xxx);
foreach ( var user in context.Users.Where(u => u.FirstName == "firstname" ).ToList())
{
context.Remove(user);
}
|
本来一句sql可以解决的问题,变得复杂了。
使用ORM是为了跟sql尽量的解耦,并且能在编译时检查出更多的错误,但是上面的写法让人堵的慌,如果你也有这种感觉下面的写法是不是就是你脑子里想要的东西呢。
----引用EF Extend Libary后删除只需要一次就完成了,效率高了很多,也不需要太多的连接资源,使用更方便了
context.Users.Delete(u => u.FirstName == "firstname" );
context.Users.Where(...).Delete();
|
当第一次看到EF EL的时候就被这种写法吸引住了,这不就是我们一直找的东西么。
批量更新
context.Users.Update(
u => u.Name.Contans( "J" ),
u2 => new User {Salary = 999});
var users = context.Users.Where(u => u.FirstName == "firstname" );
context.Users.Update(users, u => new User {FirstName = "newfirstname" });<br><br>
|
是不是更喜欢这个扩展库了?我是爱不释手了,可惜现在才开始用。
批量查询
其实现在的查询已经很棒了,默认的延迟查询都能满足基本需求,但是有时候总希望更极致一点,比如现有的查询无法满足分页这个顽固的需求。
var q = db.Tasks.Where(t => t.Priority == 2);
var q1 = q.FutureCount();
var q2 = q.Skip(pageIndex).Take(pageSize).Future();
int total = q1.Value;
var tasks = q2.ToList();
|
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended
也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对IQueryable<T>的扩展,而不是DbSet<T>(已经标记为弃用),所以跟我一样有隔离癖好的就可以大胆使用了。下面介绍如何批量删除、更新、查询。
批量删除
本来我们需要这样删除
context.Remove(context.Users.First(u=>u.Key==xxx);
foreach ( var user in context.Users.Where(u => u.FirstName == "firstname" ).ToList())
{
context.Remove(user);
}
|
本来一句sql可以解决的问题,变得复杂了。
使用ORM是为了跟sql尽量的解耦,并且能在编译时检查出更多的错误,但是上面的写法让人堵的慌,如果你也有这种感觉下面的写法是不是就是你脑子里想要的东西呢。
----引用EF Extend Libary后删除只需要一次就完成了,效率高了很多,也不需要太多的连接资源,使用更方便了
context.Users.Delete(u => u.FirstName == "firstname" );
context.Users.Where(...).Delete();
|
当第一次看到EF EL的时候就被这种写法吸引住了,这不就是我们一直找的东西么。
批量更新
context.Users.Update(
u => u.Name.Contans( "J" ),
u2 => new User {Salary = 999});
var users = context.Users.Where(u => u.FirstName == "firstname" );
context.Users.Update(users, u => new User {FirstName = "newfirstname" });<br><br>
|
是不是更喜欢这个扩展库了?我是爱不释手了,可惜现在才开始用。
批量查询
其实现在的查询已经很棒了,默认的延迟查询都能满足基本需求,但是有时候总希望更极致一点,比如现有的查询无法满足分页这个顽固的需求。
var q = db.Tasks.Where(t => t.Priority == 2);
var q1 = q.FutureCount();
var q2 = q.Skip(pageIndex).Take(pageSize).Future();
int total = q1.Value;
var tasks = q2.ToList();
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。