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: 恋水无意