ent 是一个简单而又强大的Go实体框架,易于构建和维护应用程序与大数据模型
- 简单使用数据结构作为表结构
- 使用go代码定义结构
- 基于代码生成静态类型
- 容易的进行CRUD和表遍历
- 轻易的使用Go模板扩展和自定义
简单使用
go get -d entgo.io/ent/cmd/ent
ent init User
创建完成后会在项目根文件夹下生成ent/schema包,并创建ent/schema/user.go文件
package schemaimport ("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.Strings("name").Default([]string{"unknown"}),// string类型字段name, 并设置默认值为null字符串field.Int("age").Positive(),// int类型字段age, 并设置最小为1}}// Edges of the User.func (User) Edges() []ent.Edge {return nil}
go generate ./ent
package startimport ("context""log""lrs-transfer/ent")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 func(client *ent.Client) {_ = client.Close()}(client)// Run the auto migration tool.if err := client.Schema.Create(context.Background()); err != nil {log.Fatalf("failed creating schema resources: %v", err)}}
TODO
