ent 基本使用 一 schema 迁移

ent 是 facebook 开源的golang orm 框架,简单强大,以下是一个简单使用

环境准备

  • 安装ent 工具
go get github.com/facebookincubator/ent/cmd/entc
  • 准备mysql 环境

    使用docker-compose 运行

docker-compose 文件

version: "3"
services:
  mysql:
    image: mysql:5.7.16
    ports:
      - 3306:3306
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: dalongrong
      MYSQL_DATABASE: gogs
      MYSQL_USER: gogs
      MYSQL_PASSWORD: dalongrong
      TZ: Asia/Shanghai

启动

docker-compose up  -d
  • 初始化一个golang 项目
go mod init github.com/rongfengliang/ent-demo

使用

  • 初始化schema
entc init User

效果:

├── docker-compose.yaml
└── ent
    └── schema
        └── user.go

golang 代码内容:

package schema
import "github.com/facebookincubator/ent"
// User holds the schema definition for the User entity.
type User struct {
  ent.Schema
}
// Fields of the User.
func (User) Fields() []ent.Field {
  return nil
}
// Edges of the User.
func (User) Edges() []ent.Edge {
  return nil
}
 
 
  • 添加字段
package schema
import (
  "github.com/facebookincubator/ent"
  "github.com/facebookincubator/ent/schema/field"
)
// User holds the schema definition for the User entity.
type User struct {
  ent.Schema
}
// Fields of the User.
func (User) Fields() []ent.Field {
  return []ent.Field{
        field.Int("age").
            Positive(),
        field.String("name").
            Default("unknown"),
    }
}
// Edges of the User.
func (User) Edges() []ent.Edge {
  return nil
}
  • 生成代码
entc generate ./ent/schema

效果:

 

 

  • 编写入口
    main.go
 
package main
import (
    "log"
    "github.com/rongfengliang/ent-demo/ent"
    "context"
    _ "github.com/go-sql-driver/mysql"
)
func main() {
    client, err := ent.Open("mysql", "root:dalongrong@tcp(127.0.0.1)/gogs")
    if err != nil {
        log.Fatalf("failed opening connection to sqlite: %v", err)
    }
    defer client.Close()
    // run the auto migration tool.
    if err := client.Schema.Create(context.Background()); err != nil {
        log.Fatalf("failed creating schema resources: %v", err)
    }
}
 
 
  • 运行

    说明:以上是一个schema 的处理

go run main.go
 
  • 数据库效果

 

 

说明

以上是一个简单的运行 ,后边会有一些其他的使用说明

参考资料

https://entgo.io/docs/getting-started/
https://github.com/facebookincubator/ent
https://github.com/rongfengliang/ent-demo

posted on   荣锋亮  阅读(1875)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2018-10-13 flynn 开源paas 平台安装试用
2016-10-13 maven 几个插件的使用
2014-10-13 BNF 和 ABNF 扩充巴科斯范式 了解

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示