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

发布于:2023-03-22 ⋅ 阅读:(1597) ⋅ 点赞:(1)

快速开始

简介

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)
    }
}

结构

引言

代码生成

迁移


网站公告

今日签到

点亮在社区的每一天
去签到