ent 是一个简单而又强大的Go实体框架,易于构建和维护应用程序与大数据模型
- 简单使用数据结构作为表结构
- 使用go代码定义结构
- 基于代码生成静态类型
- 容易的进行CRUD和表遍历
- 轻易的使用Go模板扩展和自定义
简单使用
go get -d entgo.io/ent/cmd/ent
ent init User
创建完成后会在项目根文件夹下生成ent/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.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 start
import (
"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