本文关于DOS.ORM
1. 准备一个示例数据库
1 2 3 4 5 6 7 8 9
   | 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项目
1 2
   | dotnet new console  dotnet add package DOS.ORM 
 
  | 
 
3. 编写代码
新建一个DB.cs
1 2 3 4 5 6 7 8 9
   | 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实体
1 2 3 4 5 6 7 8 9 10 11 12 13
   | using Dos.ORM; namespace ORMDemo; [System.ComponentModel.DataAnnotations.Schema.Table("order_50")]  public class OrderEntity: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进行查询
1 2 3
   | using ORMDemo;
  var list =DB.Context.FromSql("SELECT * from order_50 LIMIT 10").ToList<OrderEntity>();
 
  | 
 
通过上面的形式就可以查询到数据,数据会自动通过ToList<T>()映射到C#对象。
2. 使用db.Context.From<T>()
1
   | var list = DB.Context.From<Order>().ToList();
 
  | 
 
该Order类需要标记Table、Field等。一般使用Dos.Tools对已经存在的数据库生产实体类。(选择2018年的模板)
2. 新增DB.Context.Insert<T>()/Insert()
1 2 3 4
   | var order = new Order(){     ....此处省略 }; DB.Context.Insert<Order>(order) 
 
  | 
 
3. 更新DB.Context.Update<T>()/Update()
1 2 3 4 5
   | var order = new Order{     ID="CE423D3E-A1C3-40BD-9DAE-CB4C9CA11E96",     ...省略其他 }; DB.Context.Update<Order>(order,c=>c.ID== order.ID); 
 
  | 
 
4. 删除DB.Context.Delete()
1
   | DB.Context.Delete("CE423D3E-A1C3-40BD-9DAE-CB4C9CA11E96") 
 
  | 
 
后记
今天听同事说这个库好像有什么问题,具体还没跟我沟通,这个库也是在我接触的 dotnet Framework 4.x 系列的项目内接触到的。仅做记录。