ent 是一个简单而又强大的Go实体框架,易于构建和维护应用程序与大数据模型

  • 简单使用数据结构作为表结构
  • 使用go代码定义结构
  • 基于代码生成静态类型
  • 容易的进行CRUD和表遍历
  • 轻易的使用Go模板扩展和自定义

简单使用

  1. go get -d entgo.io/ent/cmd/ent
  1. ent init User

创建完成后会在项目根文件夹下生成ent/schema包,并创建ent/schema/user.go文件

  1. package schema
  2. import (
  3. "entgo.io/ent"
  4. "entgo.io/ent/schema/field"
  5. )
  6. // User holds the schema definition for the User entity.
  7. type User struct {
  8. ent.Schema
  9. }
  10. // Fields of the User.
  11. func (User) Fields() []ent.Field {
  12. return []ent.Field{
  13. field.Strings("name").Default([]string{"unknown"}),
  14. // string类型字段name, 并设置默认值为null字符串
  15. field.Int("age").Positive(),
  16. // int类型字段age, 并设置最小为1
  17. }
  18. }
  19. // Edges of the User.
  20. func (User) Edges() []ent.Edge {
  21. return nil
  22. }
  1. go generate ./ent
  1. package start
  2. import (
  3. "context"
  4. "log"
  5. "lrs-transfer/ent"
  6. )
  7. func main() {
  8. client, err := ent.Open("sqlite3", "file:ent?mode=memory&cache=shared&_fk=1")
  9. if err != nil {
  10. log.Fatalf("failed opening connection to sqlite: %v", err)
  11. }
  12. defer func(client *ent.Client) {
  13. _ = client.Close()
  14. }(client)
  15. // Run the auto migration tool.
  16. if err := client.Schema.Create(context.Background()); err != nil {
  17. log.Fatalf("failed creating schema resources: %v", err)
  18. }
  19. }

TODO