Ent.中文文档(持续更新~)

快速开始

简介

ent 是一个简单而强大的Go语言实体框架,它使得构建和维护大型数据模型的应用程序变得容易,同时ent遵循以下原则:

  • 轻松地将数据库模式建模为图形结构
  • 将模式定义为可编程的Go语言代码
  • 基于代码生成的静态类型
  • 易于编写的数据库查询和图遍历
  • 简单地扩展和使用Go模版进行自定义

设置Go环境

如果你的项目目录在GOPATH之外,或者你不熟悉GOPATH,可通过如下的命令进行Go module设置

go mod init entdemo

创建第一个模式(Schema)

在项目的根目录运行以下命令:

go run -mod=mod entgo.io/ent/cmd/ent new <Schema-name>

该命令会在指定目录:<project>/ent/schema/下生成指定<Schema-name>的模式(示例中Schema为User):


package schema
import "entgo.io/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
}

向Schema中添加2个字段:


package schema
import (
 "entgo.io/ent"
 "entgo.io/ent/schema/field"
)
// Fields of the User.
func (User) Fields() []ent.Field {
 return []ent.Field{
 field.Int("age").
 Positive(),
 field.String("nickname").
 Default("unknown"),
 }
}

在项目的根目录运行go generate命令生成文件:


 go generate ./ent

生成文件如下:


 ent
├── client.go
├── config.go
├── context.go
├── ent.go
├── generate.go
├── mutation.go
... truncated
├── schema
│ └── user.go
├── tx.go
├── user
│ ├── user.go
│ └── where.go
├── user.go
├── user_create.go
├── user_delete.go
├── user_query.go
└── user_update.go

创建第一个实体(Entity)

首先,创建一个新的ent.Client,示例中将使用MySQL


package main
import (
 "context"
 "log"
 "entdemo/ent"
 _ "github.com/go-sql-driver/mysql"
)
func main() {
 client, err := ent.Open("mysql", "<user>:<pass>@tcp(<host>:<port>)/<database>?parseTime=True")
 if err != nil {
 log.Fatalf("failed opening connection to mysql: %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)
 }
}

结构

引言

代码生成

迁移

作者:赞原文地址:https://segmentfault.com/a/1190000043570700

%s 个评论

要回复文章请先登录注册