详解.NET主流的几款重量级 ORM 框架
在 .NET 开发领域,ORM 框架是不可缺少的一部分。ORM 框架能够将程序和数据库之间的交互转化为对象之间的交互,从而简化了开发过程,提高了代码的可维护性和可读性。
下面将详细讲解.NET 主流的几款 ORM 框架和其使用方法。
Entity Framework
Entity Framework 是微软开发的 ORM 框架,它是 .NET 平台上最为主流的 ORM 框架之一。可以通过 Visual Studio 的 NuGet 包管理器安装。
在使用 Entity Framework 之前,需要定义数据实体。实体类型应该定义为公共类,并且应该包含要映射到数据库中的数据属性。例如,下面是一个简单的实体类型定义:
public class Product {
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
下面是通过 Entity Framework 创建数据库和数据表的示例代码:
using System.Data.Entity;
public class ProductDbContext : DbContext {
public DbSet<Product> Products { get; set; }
}
var db = new ProductDbContext();
db.Products.Add(new Product { Name = "iPhone X", Description = "Apple's flagship phone", Price = 999.99 });
db.SaveChanges();
Entity Framework 还支持 LINQ 查询和延迟加载,可以提高查询的灵活性和性能。
NHibernate
NHibernate 是一个开源的 ORM 框架,它是 .NET 平台上的 ORM 框架之一。可以通过 NuGet 包管理器安装。
在使用 NHibernate 之前,需要定义数据实体。实体类型应该定义为公共类,并且应该包含要映射到数据库中的数据属性。例如,下面是一个简单的实体类型定义:
public class Product {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual decimal Price { get; set; }
}
下面是通过 NHibernate 创建数据库和数据表的示例代码:
using NHibernate;
using NHibernate.Cfg;
var configuration = new Configuration();
configuration.Configure();
configuration.AddAssembly(typeof(Product).Assembly);
using (var sessionFactory = configuration.BuildSessionFactory())
{
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
session.Save(new Product { Name = "iPhone X", Description = "Apple's flagship phone", Price = 999.99 });
transaction.Commit();
}
}
}
NHibernate 还支持 LINQ 查询和 Criteria 查询,可以提高查询的灵活性和性能。
Dapper
Dapper 是一个轻量级的 ORM 框架,它不需要创建映射文件或类,可以通过 SQL 语句直接操作数据库。可以通过 NuGet 包管理器安装。
下面是通过 Dapper 创建数据库和数据表的示例代码:
using Dapper;
using System.Data.SqlClient;
var connection = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");
connection.Open();
connection.Execute("CREATE TABLE [Product] ([Id] INT, [Name] VARCHAR(50), [Description] VARCHAR(200), [Price] DECIMAL(10,2))");
connection.Execute("INSERT INTO [Product] ([Name], [Description], [Price]) VALUES ('iPhone X', 'Apple''s flagship phone', 999.99)");
Dapper 支持直接查询和强类型查询,可以提高查询的灵活性和性能。
示例
下面是一个使用 Entity Framework 和 Dapper 操作数据库的示例代码:
using System.Data.Entity;
using Dapper;
public class ProductDbContext : DbContext {
public DbSet<Product> Products { get; set; }
}
var db = new ProductDbContext();
db.Products.Add(new Product { Name = "iPhone X", Description = "Apple's flagship phone", Price = 999.99 });
db.SaveChanges();
var connection = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");
connection.Open();
var products = connection.Query<Product>("SELECT * FROM [Product] WHERE [Name] = @Name", new { Name = "iPhone X" });
这个示例演示了如何通过 Entity Framework 向数据库添加数据,并且如何通过 Dapper 查询数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解.NET主流的几款重量级 ORM框架 - Python技术站