.NET Core下有热门的ORM框架使用方法

.NET Core下有很多热门的ORM框架,以下是其中六个常用的框架,包括EF Core、DApper、NHibernate、Fluent NHibernate、LLBLGen Pro和PetaPoco 。接下来,我将为您详细介绍每个框架的优缺点,并提供示例代码演示如何使用 。

  1. Entity Framework Core (EF Core)
  • 优点: EF Core是.NET Core官方推荐的ORM框架,具有广泛的社区支持和文档资源 。提供了强大的对象关系映射和LINQ查询功能,可以简化开发过程 。支持多种数据库提供程序,包括SQL Server、MySQL、SQLite等 。缺点: EF Core的性能相对较低,因为它需要进行较多的映射和转换操作 。在一些高级查询和复杂映射方面,EF Core的功能可能不如其他框架强大 。
示例代码:
// 定义模型类public class Product{public int Id { get; set; }public string Name { get; set; }public decimal Price { get; set; }}// 创建DbContextpublic class MyDbContext : DbContext{public DbSet<Product> Products { get; set; }protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseSqlServer("connectionString");}}// 查询数据using (var dbContext = new MyDbContext()){var products = dbContext.Products.Where(p => p.Price > 10).ToList();}// 插入数据using (var dbContext = new MyDbContext()){var newProduct = new Product { Name = "New Product", Price = 20 };dbContext.Products.Add(newProduct);dbContext.SaveChanges();}
  1. Dapper
  • 优点: Dapper是一个轻量级的ORM框架,性能出色 , 适用于对性能要求较高的项目 。提供了简洁的API,易于学习和使用 。支持多种数据库,包括SQL Server、MySQL、Oracle等 。缺点: Dapper相对于EF Core来说,功能较为简单,不提供ORM中的一些高级特性,如自动迁移、关联查询等 。
示例代码:
// 查询数据using (var connection = new SqlConnection("connectionString")){var products = connection.Query<Product>("SELECT * FROM Products WHERE Price > @Price", new { Price = 10 }).ToList();}// 插入数据using (var connection = new SqlConnection("connectionString")){var newProduct = new Product { Name = "New Product", Price = 20 };connection.Execute("INSERT INTO Products (Name, Price) VALUES (@Name, @Price)", newProduct);}
  1. NHibernate
  • 优点: NHibernate是一个成熟稳定的ORM框架 , 具有广泛的社区支持和文档资源 。提供了丰富的特性和高度的可定制性,适用于复杂的数据映射和查询场景 。支持多种数据库,包括SQL Server、MySQL、Oracle等 。缺点: 学习曲线较陡峭,配置和使用相对复杂 。性能相对较低,因为需要进行较多的映射和转换操作 。
示例代码:
// 定义映射文件public class ProductMap : ClassMapping<Product>{public ProductMap(){Id(x => x.Id, map => map.Generator(Generators.Identity));Property(x => x.Name);Property(x => x.Price);Table("Products");}}// 创建SessionFactoryvar configuration = new Configuration();configuration.Configure(); // 加载配置文件configuration.AddMapping(typeof(ProductMap)); // 添加映射文件var sessionFactory = configuration.BuildSessionFactory();// 查询数据using (var session = sessionFactory.OpenSession()){using (var transaction = session.BeginTransaction()){var products = session.Query<Product>().Where(p => p.Price > 10).ToList();transaction.Commit();}}// 插入数据using (var session = sessionFactory.OpenSession()){using (var transaction = session.BeginTransaction()){var newProduct = new Product { Name = "New Product", Price = 20 };session.Save(newProduct);transaction.Commit();}}
  1. Fluent NHibernate
  • 优点: Fluent NHibernate是NHibernate的一个扩展 , 提供了更加流畅和可读性更高的方式来进行映射配置 。简化了NHibernate的配置过程,使代码更加易于维护 。支持多种数据库,包括SQL Server、MySQL、Oracle等 。缺点: 学习曲线较陡峭,对NHibernate的理解要求较高 。性能相对较低,因为需要进行较多的映射和转换操作 。
示例代码:
// 定义映射类public class ProductMap : ClassMap<Product>{public ProductMap(){Id(x => x.Id);Map(x => x.Name);Map(x => x.Price);Table("Products");}}// 创建SessionFactoryvar sessionFactory = Fluently.Configure().Database(MsSqlConfiguration.MsSql2012.ConnectionString("connectionString")).Mappings(m => m.FluentMappings.AddFromAssemblyOf<ProductMap>()).BuildSessionFactory();// 查询数据using (var session = sessionFactory.OpenSession()){using (var transaction = session.BeginTransaction()){var products = session.Query<Product>().Where(p => p.Price > 10).ToList();transaction.Commit();}}// 插入数据using (var session = sessionFactory.OpenSession()){using (var transaction = session.BeginTransaction()){var newProduct = new Product { Name = "New Product", Price = 20 };session.Save(newProduct);transaction.Commit();}}


推荐阅读