网站开发安全问题,卡盟做网站,怎么查找公司的注册信息,广州网站建设哪个好在.NET世界中#xff0c;提到ORM#xff0c;最常用的是下面2个#xff1a;Dapper#xff0c;通过提供IDbConnection的扩展方法来查询数据库。它的优点在于可以轻松地执行参数化查询#xff0c;将结果转化为对象#xff1b;非常高效#xff0c;在速度方面拥有micro-ORM之… 在.NET世界中提到ORM最常用的是下面2个Dapper通过提供IDbConnection的扩展方法来查询数据库。它的优点在于可以轻松地执行参数化查询将结果转化为对象非常高效在速度方面拥有micro-ORM之王的称号。EF Core微软开源的ORM。它的优点在于允许执行CRUD操作而无需编写SQL。那有不有把2者优点结合的ORM呢RepoDbRepoDb是一个轻量级、高性能、高效的混合ORM。它提供了Dapper相似的简单性同时又像EF Core将一些复杂的操作进行了封装, 因此它被认为是一种“混合ORM”。RepoDb在“微”和“全”操作的使用之间切换很容易这为开发人员在开发应用程序时提供了灵活性。“高性能”和“低内存使用率”是这个库的主要特点你可以从下面这张图中窥见一斑RepoDb支持SQL Server, SQLite, MySQL和PostgreSQL数据库下面就让我们使用SQL Server数据库来了解一下RepoDb有哪些特别之处基础功能首先需要引用Nuget包RepoDb.SqlServer。然后在程序启动时进行初始化RepoDb.SqlServerBootstrap.Initialize();RepoDB所有功能都支持 Raw-SQL/Fluent 2种方式。CRUD//Raw-SQL
using (var connection new SqlConnection(ConnectionString))
{var user connection.QueryUser(SELECT * FROM [dbo].[User] WHERE (Id Id);, new { Id 1 }).FirstOrDefault();
}//Fluent
using (var connection new SqlConnection(ConnectionString))
{var user connection.QueryUser(e e.Id 1).FirstOrDefault();
}//Raw-SQL
using (var connection new SqlConnection(ConnectionString))
{var affectedRows connection.ExecuteScalarint(UPDATE [dbo].[User] SET Name Name WHERE Id Id;,new{Id 1,Name My IO,});
}//Fluent
using (var connection new SqlConnection(ConnectionString))
{var user new User{Id 1,Name My IO,};var affectedRows connection.UpdateUser(user);
}多表查询using (var connection new SqlConnection(ConnectionString))
{var orderId 10045;var tuple connection.QueryMultipleOrder, OrderItems(order order.Id orderId, orderItem orderItem.OrderId orderId);var order tuple.Item1.FirstOrDefault();var orderItems tuple.Item2.AsList();order.OrderItems orderItems;
}in查询using (var connection new SqlConnection(ConnectionString))
{var names new [] { wx, My IO };var users connection.Queryuser(e names.Contains(e e.Name));
}高级功能下面举例几个Dapper和EF Core默认不支持的功能。Merge用于插入新行或更新表中的现有行。默认使用Id作为条件也可以用qualifiers指定条件var user new User
{Name My IO,Age 20,
};
using (var connection new SqlConnection(ConnectionString))
{var id connection.Merge(user, qualifiers: (p new { p.Name }));
}批量操作如果要执行批量操作比如BulkDelete, BulkInsert, BulkMerge和BulkUpdate必须先安装Nuget包RepoDb.SqlServer.BulkOperations。using (var connection new SqlConnection(connectionString))
{var users GetUsers(10000);var insertedRows connection.BulkInsert(users);
}分页using (var connection new SqlConnection(connectionString))
{var orderBy OrderField.Parse(new { Id Order.Descending });var page 0; // 从0开始var rowsPerBatch 20; //每页20条var people connection.BatchQueryUser(page: page,rowsPerBatch: rowsPerBatch,orderBy: orderBy,where: e e.IsActive true);
}结论篇幅有限RepoDb的其他功能在这就不做介绍了你可以到官网https://repodb.net/进行详细了解。总体来说使用RepoDb开发代码更容易、更快捷。RepoDb具有Dapper很多没有的可立即使用的丰富功能集。使用它必将帮助你快速交付代码。如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“记住我