ITPub博客

首页 > 数据库 > 数据库开发技术 > .NET 主流ORM框架功能介绍及C#示例代码

.NET 主流ORM框架功能介绍及C#示例代码

原创 数据库开发技术 作者:后端Q 时间:2024-07-09 00:00:00 0 删除 编辑

在.NET开发中,对象关系映射(ORM)框架是一种至关重要的技术,它允许开发者以面向对象的方式来操作数据库,而无需直接编写复杂的SQL语句。本文将全面介绍.NET生态系统中主流的ORM框架,包括Entity Framework Core (EF Core)、SqlSugar、Dapper、NHibernate等,并通过C#示例代码展示它们的基本用法和高级特性。

一、ORM框架概述

ORM(Object-Relational Mapping)是一种在编程中用于将对象模型表示的数据与关系数据库中的数据进行映射的技术。ORM框架通过自动生成和执行SQL语句,简化了数据库操作,提高了开发效率,同时增强了代码的可读性和可维护性。

二、主流ORM框架介绍

1. Entity Framework Core (EF Core)

Entity Framework Core是微软开发的轻量级、可扩展、开源和跨平台的ORM框架,它是Entity Framework的轻量级版本。EF Core支持LINQ查询、更改跟踪、更新和架构迁移等功能,使得开发者能够轻松地使用.NET对象处理数据库。

基本用法示例:

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // 创建数据
            db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
            db.SaveChanges();

            // 查询数据
            var blog = db.Blogs.FirstOrDefault();
            Console.WriteLine($"Blog Url: {blog.Url}");

            // 更新数据
            blog.Url = "https://devblogs.microsoft.com/dotnet";
            db.SaveChanges();

            // 删除数据
            db.Blogs.Remove(blog);
            db.SaveChanges();
        }
    }
}

2. SqlSugar

SqlSugar是一款高性能、轻量级的.NET ORM框架,由果糖大数据科技团队维护和更新。它支持多种数据库,包括MySQL、SQL Server、SQLite、Oracle等,并且提供了丰富的查询体系和高级功能,如跨库查询、大数据处理、租户分库等。

基本用法示例:

using SqlSugar;

class Program
{
    static void Main(string[] args)
    {
        SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
        {
            ConnectionString = "你的数据库连接字符串",
            DbType = DbType.SqlServer,
            IsAutoCloseConnection = true
        });

        // 查询
        var list = db.Queryable<Student>().ToList();

        // 插入
        db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();

        // 更新
        db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();

        // 删除
        db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();
    }

    public class Student
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }
        public int? SchoolId { get; set; }
        public string Name { get; set; }
    }
}

3. Dapper

Dapper是一款轻量级的ORM工具,由Stack Overflow团队开发。它以其极快的性能和易用性而闻名,几乎与使用原始的ADO.NET数据读取器一样快。Dapper支持使用事务、存储过程或数据批量插入的静态和动态对象绑定。

基本用法示例:

using Dapper;
using System;
using System.Data.SqlClient;

class Program
{
    static void Main(string[] args)
    {
        string connString = "你的数据库连接字符串";
        using (var connection = new SqlConnection(connString))
        {
            connection.Open();

            // 查询
            var sql = "SELECT * FROM Students";
            var students = connection.Query<Student>(sql);

            // 插入
            var sqlInsert = "INSERT INTO Students (SchoolId, Name) VALUES (@SchoolId, @Name)";
            connection.Execute(sqlInsert, new { SchoolId = 1, Name = "jack" });

            // 更新
            var sqlUpdate = "UPDATE Students SET Name = @Name WHERE Id = @Id";
            connection.Execute(sqlUpdate, new { Id = 1, Name = "jack2" });

            // 删除
            var sqlDelete = "DELETE FROM Students WHERE Id = @Id";
            connection.Execute(sqlDelete, new { Id = 1 });
        }
    }

    public class Student
    {
        public int Id { get; set; }
        public int? SchoolId { get; set; }
        public string Name { get; set; }
    }
}

4. NHibernate

NHibernate是一个面向.NET环境的对象/关系数据库映射工具,它提供了丰富的映射和查询功能,支持延迟加载、二级缓存等高级特性。NHibernate使用HQL(Hibernate Query Language)和LINQ作为查询语言。

基本用法示例(由于篇幅限制,这里仅展示实体类和配置部分):

using NHibernate;
using NHibernate.Cfg;

// 实体类(省略属性和方法)
public class Student
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    // ...
}

// 配置文件(通常放在App.config或hibernate.cfg.xml中)
// ...

// SessionFactory和Session的使用(在业务逻辑中)
// ...

三、ORM框架的选择

选择合适的ORM框架对于.NET项目的开发至关重要。不同的ORM框架具有不同的特点和优势,开发者应根据项目的具体需求、团队的技术栈以及性能要求来选择合适的框架。例如,对于需要高性能和轻量级解决方案的项目,Dapper可能是一个不错的选择;而对于需要丰富功能和强大映射能力的项目,EF Core或NHibernate可能更为合适。

四、总结

本文全面介绍了.NET生态系统中主流的ORM框架,包括Entity Framework Core、SqlSugar、Dapper和NHibernate,并通过C#示例代码展示了它们的基本用法和高级特性。ORM框架在.NET开发中扮演着至关重要的角色,它们简化了数据库操作,提高了开发效率,同时增强了代码的可读性和可维护性。开发者应根据项目的具体需求选择合适的ORM框架,并充分利用其提供的丰富功能和特性来优化项目开发和维护。


原文作者:后端Q;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-01-22

  • 博文量
    1540
  • 访问量
    728670