@@ -25,12 +25,13 @@ type fixturesLoader struct {
2525func (f * fixturesLoader ) prepareFieldValue (v any ) any {
2626 if s , ok := v .(string ); ok {
2727 if strings .HasPrefix (s , "::HEX::" ) {
28- b , _ := hex .DecodeString (s [8 :])
28+ b , _ := hex .DecodeString (s [7 :])
2929 return b
3030 }
3131 }
3232 return v
3333}
34+
3435func (f * fixturesLoader ) loadFixtures (file string ) error {
3536 data , err := os .ReadFile (file )
3637 if err != nil {
@@ -49,12 +50,19 @@ func (f *fixturesLoader) loadFixtures(file string) error {
4950 return err
5051 }
5152
53+ sess := f .engine .NewSession ()
54+ err = sess .Begin ()
55+ if err != nil {
56+ return err
57+ }
58+ defer sess .Close ()
59+
5260 switch f .engine .Dialect ().URI ().DBType {
5361 case schemas .MSSQL :
54- _ , _ = f . engine . Exec ("SET IDENTITY_INSERT [%s] ON" , tableName )
55- defer func () {
56- _ , _ = f . engine . Exec ( "SET IDENTITY_INSERT [%s] OFF" , tableName )
57- }()
62+ _ , err = sess . Exec (fmt . Sprintf ( "SET IDENTITY_INSERT %s ON" , tableNameQuoted ) )
63+ if err != nil {
64+ return err
65+ }
5866 }
5967
6068 var sqlBuf []byte
@@ -72,14 +80,14 @@ func (f *fixturesLoader) loadFixtures(file string) error {
7280 sqlBuf = append (sqlBuf , "?," ... )
7381 }
7482 sqlBuf [len (sqlBuf )- 1 ] = ')'
75- _ , err = f . engine .Exec (append ([]any {util .BytesToReadOnlyString (sqlBuf )}, sqlArguments ... )... )
83+ _ , err = sess .Exec (append ([]any {util .BytesToReadOnlyString (sqlBuf )}, sqlArguments ... )... )
7684 if err != nil {
7785 return err
7886 }
7987 sqlBuf = sqlBuf [:0 ]
8088 sqlArguments = sqlArguments [:0 ]
8189 }
82- return nil
90+ return sess . Commit ()
8391}
8492
8593func (f * fixturesLoader ) Load () error {
0 commit comments