文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-11-30 04:59

关注

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

  1. Entity Framework Core (EF Core)

示例代码:

// 定义模型类
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
// 创建DbContext
public class MyDbContext : DbContext
{
public DbSet 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();
}

Dapper

示例代码:

// 查询数据
using (var connection = new SqlConnection("connectionString"))
{
var products = connection.Query("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);
}

NHibernate

示例代码:

// 定义映射文件
public class ProductMap : ClassMapping
{
public ProductMap()
{
Id(x => x.Id, map => map.Generator(Generators.Identity));
Property(x => x.Name);
Property(x => x.Price);
Table("Products");
}
}
// 创建SessionFactory
var 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().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();
}
}

Fluent NHibernate

示例代码:

// 定义映射类
public class ProductMap : ClassMap
{
public ProductMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Price);
Table("Products");
}
}
// 创建SessionFactory
var sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString("connectionString"))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf())
.BuildSessionFactory();
// 查询数据
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var products = session.Query().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();
}
}

LLBLGen Pro

示例代码:

// 定义模型类
[Serializable]
[DataEntity(IsGenerated = true)]
public partial class Product : EntityBase
{
[DataField(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
[DataField]
public string Name { get; set; }
[DataField]
public decimal Price { get; set; }
}
// 查询数据
using (var adapter = new DataAccessAdapter())
{
var products = adapter.FetchQuery(new RelationPredicateBucket(ProductFields.Price > 10));
}
// 插入数据
using (var adapter = new DataAccessAdapter())
{
var newProduct = new Product { Name = "New Product", Price = 20 };
adapter.SaveEntity(newProduct);
}

PetaPoco

示例代码:

// 查询数据
using (var db = new Database("connectionString"))
{
		var products = db.Query("SELECT * FROM Products WHERE Price > @0", 10);
}
// 插入数据
using (var db = new Database("connectionString"))
{
    var newProduct = new Product { Name = "New Product", Price = 20 };
    db.Insert(newProduct);
}

以上是几种常见的.NET ORM框架,每种框架都有其特点和适用场景。选择合适的框架需要根据项目需求、团队经验和个人偏好来决定。如果需要更高级的功能和更好的性能,可以考虑使用商业级的ORM框架,如Entity Framework Core、LLBLGen Pro等。如果对性能要求较高,可以考虑使用轻量级的框架,如Dapper、PetaPoco等。

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯