ent 是一个由 Facebook 开发的 Go 语言的实体框架,用于构建和维护数据模型。它提供了一种简单的方式来定义、交互和查询数据。

以下是 ent 的一些主要特性和使用方法:

Schema 定义

ent 中,你可以使用 Go 代码来定义你的数据模型(实体)。每个实体都有一个 schema 文件,定义了实体的字段和关系。

// ./ent/schema/user.go
package schema

import (
	"entgo.io/ent"
	"entgo.io/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.String("name"),
		field.Int("age"),
	}
}

生成代码

一旦你定义了 schema,你可以运行 go generate ./ent 来生成实体的 Go 代码。生成的代码包括实体的 CRUD 方法,以及查询 builder。

使用生成的代码

你可以使用生成的代码来创建、查询、更新和删除实体。

// ./main.go
package main

import (
	"context"
	"log"

	"<your-project>/ent"
	"<your-project>/ent/user"
)

func main() {
	client, err := ent.Open("sqlite3", "file:ent?mode=memory&cache=shared&_fk=1")
	if err != nil {
		log.Fatalf("failed opening connection to sqlite: %v", err)
	}
	defer client.Close()
	ctx := context.Background()

	// Create a User.
	u, err := client.User.
		Create().
		SetAge(30).
		SetName("Alice").
		Save(ctx)
	if err != nil {
		log.Fatalf("failed creating user: %v", err)
	}

	// Query User.
	u, err = client.User.
		Query().
		Where(user.Name("Alice")).
		Only(ctx)
	if err != nil {
		log.Fatalf("failed querying user: %v", err)
	}
}

迁移

ent 还支持 schema 迁移。你可以使用 ent migrate 命令来创建和更新数据库表。

以上就是 ent 的基本使用方法。更多详细的信息和教程,你可以访问 ent 的官方文档:https://entgo.io/docs/getting-started/


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意