• C#轻量级ORM使用记录



    title: DOS.ORM使用笔记
    date: 2022-05-07 23:11:41
    tags:

    本文关于DOS.ORM

    1. 准备一个示例数据库

    CREATE TABLE `order_50`  (
      `ID` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
      `ProductName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
      `CreateTime` datetime(0) NULL DEFAULT NULL,
      `CreateOrderUserId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`ID`) USING BTREE,
      INDEX `idx`(`ProductName`) USING BTREE,
      INDEX `indc`(`CreateOrderUserId`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    

    2. 新建一个Console项目

    dotnet new console #新建项目
    dotnet add package DOS.ORM #安装DOS.ORM包
    

    3. 编写代码

    新建一个DB.cs

    using Dos.ORM;
    
    namespace ORMDemo;
    
    public class DB
    {
        public static readonly DbSession Context = new DbSession(DatabaseType.MySql,
            "Server=127.0.0.1;port=3307;userid=root;password=123456;database=mytestdb_5;");
    }
    

    新建一个Entity

    我们这里新建一个Order实体

    using Dos.ORM;
    namespace ORMDemo;
    [System.ComponentModel.DataAnnotations.Schema.Table("order_50")] //必须添加数据库实体表明
    public class OrderEntity:Entity //必须继承Entity
    {
            public string Id { get; set; } = Guid.NewGuid().ToString();
    
            public string CreateOrderUserId { get; set; }
            
            public DateTime CreateTime { get; set; }
    
            public string ProductName { get; set; }
    }
    

    这个实体对象必须指定数据库的表名,并继承Entity(位于DOS.ORM)

    使用DOS.ORM进行查询数据

    1. 使用FromSql进行查询

    using ORMDemo;
    
    var list =DB.Context.FromSql("SELECT * from order_50 LIMIT 10").ToList<OrderEntity>();
    

    通过上面的形式就可以查询到数据,数据会自动通过ToList<T>()映射到C#对象。

    2. 使用db.Context.From<T>()

    var list = DB.Context.From<Order>().ToList();
    

    该Order类需要标记Table、Field等。一般使用Dos.Tools对已经存在的数据库生产实体类。(选择2018年的模板)

    2. 新增DB.Context.Insert<T>()/Insert()

    var order = new Order(){
        ....此处省略
    };
    DB.Context.Insert<Order>(order) //插入对象
    

    3. 更新DB.Context.Update<T>()/Update()

    var order = new Order{
        ID="CE423D3E-A1C3-40BD-9DAE-CB4C9CA11E96",
        ...省略其他
    };
    DB.Context.Update<Order>(order,c=>c.ID== order.ID); // 更新
    

    4. 删除DB.Context.Delete()

    DB.Context.Delete("CE423D3E-A1C3-40BD-9DAE-CB4C9CA11E96") //可以单条或者列表
    

    后记

    今天听同事说这个库好像有什么问题,具体还没跟我沟通,这个库也是在我接触的 dotnet Framework 4.x 系列的项目内接触到的。仅做记录。

  • 相关阅读:
    网络流模型之二分图匹配问题
    省选测试8
    省选测试9
    省选测试7
    省选测试6
    网络流最大流、最小割学习笔记
    kruskal重构树学习笔记
    省选测试5
    Python 打包成exe 方式
    JQuery
  • 原文地址:https://www.cnblogs.com/harry7988/p/16230026.html
Copyright © 2020-2023  润新知