有什么方法可以摆脱 GORM 中的自动列重命名?
Any way to get rid of automated column renaming in GORM?
我打算将 GORM 与现有数据库一起使用,因此我正在为它创建一些模型。但是,我遇到了一个问题——GORM 自动将所有列重命名为小写蛇形。我真的不需要它,因为我使用的数据库并没有真正使用这样的名称。我发现,我可以使用 tag
`gorm:"column_name:`
为了防止我的专栏被改名。然而,它对我来说似乎并不是一个可行的解决方案,因为我有一堆带有大量列的模型。有什么方法可以从 GORM 中关闭这个“重命名”策略,或者自动为我的所有模型添加标签吗?
我的模型是这样的:
type FOOD_DES struct {
NDB_NO string `gorm:"primary_key"`
FdGrp_Cd FD_GROUP
Long_Desc string
Shrt_Desc string
ComName string
ManufacName string
Survey string
Ref_desc string
Refuse float32
SciName string
N_Factor float32
Pro_Factor float32
Fat_Factor float32
CHO_Factor float32
}
来自doc:
GORM allows users to change the naming conventions by overriding the
default NamingStrategy which need to implements interface Namer
type Namer interface {
TableName(table string) string
ColumnName(table, column string) string
JoinTableName(table string) string
RelationshipFKName(Relationship) string
CheckerName(table, column string) string
IndexName(table, column string) string
}
所以只需实现接口 Namer。
而在旧版本中,您可以这样做 (Ref)
gorm.AddNamingStrategy(&gorm.NamingStrategy{
DB: func(name string) string {
return name
},
Table: func(name string) string {
return name
},
Column: func(name string) string {
return name
},
})
我打算将 GORM 与现有数据库一起使用,因此我正在为它创建一些模型。但是,我遇到了一个问题——GORM 自动将所有列重命名为小写蛇形。我真的不需要它,因为我使用的数据库并没有真正使用这样的名称。我发现,我可以使用 tag
`gorm:"column_name:`
为了防止我的专栏被改名。然而,它对我来说似乎并不是一个可行的解决方案,因为我有一堆带有大量列的模型。有什么方法可以从 GORM 中关闭这个“重命名”策略,或者自动为我的所有模型添加标签吗?
我的模型是这样的:
type FOOD_DES struct {
NDB_NO string `gorm:"primary_key"`
FdGrp_Cd FD_GROUP
Long_Desc string
Shrt_Desc string
ComName string
ManufacName string
Survey string
Ref_desc string
Refuse float32
SciName string
N_Factor float32
Pro_Factor float32
Fat_Factor float32
CHO_Factor float32
}
来自doc:
GORM allows users to change the naming conventions by overriding the default NamingStrategy which need to implements interface Namer
type Namer interface { TableName(table string) string ColumnName(table, column string) string JoinTableName(table string) string RelationshipFKName(Relationship) string CheckerName(table, column string) string IndexName(table, column string) string }
所以只需实现接口 Namer。
而在旧版本中,您可以这样做 (Ref)
gorm.AddNamingStrategy(&gorm.NamingStrategy{
DB: func(name string) string {
return name
},
Table: func(name string) string {
return name
},
Column: func(name string) string {
return name
},
})