Просмотр исходного кода

added dbo/model conversion tools; added add/edit hooks; tests

tags/v0.3.0
Robin Thoni 7 лет назад
Родитель
Сommit
74599ffb52

+ 16
- 20
Luticate2.Utils/DataAccess/LuEfCrudDataAccess.cs Просмотреть файл

114
 
114
 
115
 
115
 
116
 
116
 
117
-        protected virtual LuResult<TModel> _Add(TDboCreate dbo, TDbContext db, DbSet<TModel> table)
117
+        protected virtual LuResult<bool> _Add(TModel model, TDboCreate dbo, TDbContext db, DbSet<TModel> table)
118
         {
118
         {
119
-            return LuResult<TModel>.Ok(GetModelFromTCreate(dbo));
119
+            return LuResult<bool>.Ok(true);
120
         }
120
         }
121
 
121
 
122
         public virtual LuResult<T> Add<T>(IEnumerable<TDboCreate> objs, Func<IEnumerable<TDboRead>, T> returnFunc)
122
         public virtual LuResult<T> Add<T>(IEnumerable<TDboCreate> objs, Func<IEnumerable<TDboRead>, T> returnFunc)
127
                 var transact = BeginTransaction(db);
127
                 var transact = BeginTransaction(db);
128
                 foreach (var dbo in objs)
128
                 foreach (var dbo in objs)
129
                 {
129
                 {
130
-                    var res = _Add(dbo, db, table);
130
+                    var model = GetModelFromTCreate(dbo);
131
+                    table.Add(model);
132
+                    models.Add(model);
133
+                    var res = _Add(model, dbo, db, table);
131
                     if (!res)
134
                     if (!res)
132
                     {
135
                     {
133
                         RollbackTransaction(transact);
136
                         RollbackTransaction(transact);
134
                         return res.To<T>();
137
                         return res.To<T>();
135
                     }
138
                     }
136
-                    table.Add(res.Data);
137
-                    models.Add(res.Data);
138
                 }
139
                 }
139
                 db.SaveChanges();
140
                 db.SaveChanges();
140
-                foreach (var model in models)
141
-                {
142
-                    db.Entry(model).State = EntityState.Detached;
143
-                }
144
                 CommitTransaction(transact);
141
                 CommitTransaction(transact);
145
                 return LuResult<T>.Ok(default(T));
142
                 return LuResult<T>.Ok(default(T));
146
             });
143
             });
186
         {
183
         {
187
             return Execute((db, table) =>
184
             return Execute((db, table) =>
188
             {
185
             {
189
-                var model = GetGetQueryable(db, table).AsNoTracking().FirstOrDefault(predicate);
186
+                var model = GetGetQueryable(db, table).FirstOrDefault(predicate);
190
                 if (model == default(TModel))
187
                 if (model == default(TModel))
191
                 {
188
                 {
192
                     return GetNotFoundResult<TDboRead>();
189
                     return GetNotFoundResult<TDboRead>();
240
                 {
237
                 {
241
                     ordered = func(ordered);
238
                     ordered = func(ordered);
242
                 }
239
                 }
243
-                var data = ordered.Where(predicate).Skip(page * perPage).Take(perPage).AsNoTracking().Select(GetDboFromModel).ToList();
240
+                var data = ordered.Where(predicate).Skip(page * perPage).Take(perPage).Select(GetDboFromModel).ToList();
244
                 var result = new LuPaginatedDbo<TDboRead>
241
                 var result = new LuPaginatedDbo<TDboRead>
245
                 {
242
                 {
246
                     Count = count,
243
                     Count = count,
285
                     if (exp == null)
282
                     if (exp == null)
286
                     {
283
                     {
287
                         return LuResult<LuPaginatedDbo<TDboRead>>.Error(LuStatus.InputError,
284
                         return LuResult<LuPaginatedDbo<TDboRead>>.Error(LuStatus.InputError,
288
-                            string.Format("LuEfCrudDataAccess: {0}", field.Name), "Invalid order by field");
285
+                            $"LuEfCrudDataAccess: {field.Name}", "Invalid order by field");
289
                     }
286
                     }
290
                     if (ordered != null)
287
                     if (ordered != null)
291
                     {
288
                     {
297
                     }
294
                     }
298
                 }
295
                 }
299
 
296
 
300
-                var data = ordered.Skip(page * perPage).Take(perPage).AsNoTracking().Select(GetDboFromModel).ToList();
297
+                var data = ordered.Skip(page * perPage).Take(perPage).Select(GetDboFromModel).ToList();
301
                 var result = new LuPaginatedDbo<TDboRead>
298
                 var result = new LuPaginatedDbo<TDboRead>
302
                 {
299
                 {
303
                     Count = count,
300
                     Count = count,
327
 //            IList<TModel> models = null;
324
 //            IList<TModel> models = null;
328
 //            var editRes = Execute((db, table) =>
325
 //            var editRes = Execute((db, table) =>
329
 //            {
326
 //            {
330
-//                models = GetEditQueryable(db, table).Where(predicate).AsNoTracking().ToList();
327
+//                models = GetEditQueryable(db, table).Where(predicate).ToList();
331
 //                foreach (var model in models)
328
 //                foreach (var model in models)
332
 //                {
329
 //                {
333
 //                    update(model);
330
 //                    update(model);
334
-//                    db.Entry(model).State = EntityState.Modified;
335
 //                }
331
 //                }
336
 //                db.SaveChanges();
332
 //                db.SaveChanges();
337
 //                return LuResult<T>.Ok(default(T));
333
 //                return LuResult<T>.Ok(default(T));
376
 //            return EditSingleById(id, update, read => read);
372
 //            return EditSingleById(id, update, read => read);
377
 //        }
373
 //        }
378
 
374
 
379
-        protected virtual LuResult<bool> _EditSingleById(TId id, TModel model, TDboUpdate update, TDbContext db, DbSet<TModel> table)
375
+        protected virtual LuResult<bool> _EditSingleById(TModel model, TDboUpdate update, TDbContext db, DbSet<TModel> table)
380
         {
376
         {
381
-            EditModelFromTUpdate(update, model);
382
             return LuResult<bool>.Ok(true);
377
             return LuResult<bool>.Ok(true);
383
         }
378
         }
384
 
379
 
393
             var editRes = Execute((db, table) =>
388
             var editRes = Execute((db, table) =>
394
             {
389
             {
395
                 var model = GetEditQueryable(db, table).FirstOrDefault(GetExpression(new KeyValuePair<string, object>("id", guid)));
390
                 var model = GetEditQueryable(db, table).FirstOrDefault(GetExpression(new KeyValuePair<string, object>("id", guid)));
396
-                var res = _EditSingleById(id, model, update, db, table);
391
+                EditModelFromTUpdate(update, model);
392
+                db.SaveChanges();
393
+                var res = _EditSingleById(model, update, db, table);
397
                 if (!res)
394
                 if (!res)
398
                 {
395
                 {
399
                     RollbackTransaction(transact);
396
                     RollbackTransaction(transact);
400
                     return res.To<T>();
397
                     return res.To<T>();
401
                 }
398
                 }
402
-                db.Entry(model).State = EntityState.Modified;
403
                 db.SaveChanges();
399
                 db.SaveChanges();
404
                 return LuResult<T>.Ok(default(T));
400
                 return LuResult<T>.Ok(default(T));
405
             });
401
             });
432
             return Execute((db, table) =>
428
             return Execute((db, table) =>
433
             {
429
             {
434
                 var transact = BeginTransaction(db);
430
                 var transact = BeginTransaction(db);
435
-                var models = GetDeleteQueryable(db, table).Where(predicate).AsNoTracking().ToList();
431
+                var models = GetDeleteQueryable(db, table).Where(predicate).ToList();
436
                 var getRes = GetMultiple(models, returnFunc);
432
                 var getRes = GetMultiple(models, returnFunc);
437
                 if (!getRes)
433
                 if (!getRes)
438
                 {
434
                 {

+ 11
- 1
Luticate2.Utils/Utils/LuCoreUtilsExtensions.cs Просмотреть файл

20
             return string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString())).ToLower();
20
             return string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString())).ToLower();
21
         }
21
         }
22
 
22
 
23
+        public static T ToOptEnum<T>(this string model)
24
+        {
25
+            return model == null ? default(T) : (T) Enum.Parse(typeof(T), model);
26
+        }
27
+
23
         public static T ToEnum<T>(this string model)
28
         public static T ToEnum<T>(this string model)
24
         {
29
         {
25
             return (T) Enum.Parse(typeof(T), model);
30
             return (T) Enum.Parse(typeof(T), model);
26
         }
31
         }
27
 
32
 
28
-        public static Guid? ToGuid(this string str)
33
+        public static Guid? ToOptGuid(this string str)
29
         {
34
         {
30
             return str == null ? (Guid?)null : new Guid(str);
35
             return str == null ? (Guid?)null : new Guid(str);
31
         }
36
         }
32
 
37
 
38
+        public static Guid ToGuid(this string str)
39
+        {
40
+            return new Guid(str);
41
+        }
42
+
33
         public static string ToDbo(this Guid model)
43
         public static string ToDbo(this Guid model)
34
         {
44
         {
35
             return model.ToString();
45
             return model.ToString();

+ 8
- 3
TestUtils/DataAccess/LuUtilsPkGuidDataAccess.cs Просмотреть файл

66
             return model => LuUtilsDbContext.lu_texts_match(filter.Query, model.some_text + " " + model.some_int.ToString());
66
             return model => LuUtilsDbContext.lu_texts_match(filter.Query, model.some_text + " " + model.some_int.ToString());
67
         }
67
         }
68
 
68
 
69
-        protected override LuResult<pk_guid> _Add(PkGuidAddDbo dbo, LuUtilsDbContext db, DbSet<pk_guid> table)
69
+        protected override LuResult<bool> _Add(pk_guid model, PkGuidAddDbo dbo, LuUtilsDbContext db, DbSet<pk_guid> table)
70
         {
70
         {
71
             if (dbo.SomeInt == 2424)
71
             if (dbo.SomeInt == 2424)
72
             {
72
             {
74
             }
74
             }
75
             if (dbo.SomeInt == 4242)
75
             if (dbo.SomeInt == 4242)
76
             {
76
             {
77
-                return LuResult<pk_guid>.Error(LuStatus.DbError, "Some expected error", "");
77
+                return LuResult<bool>.Error(LuStatus.DbError, "Some expected error", "");
78
             }
78
             }
79
-            return LuResult<pk_guid>.Ok(GetModelFromTCreate(dbo));
79
+            return LuResult<bool>.Ok(true);
80
+        }
81
+
82
+        protected override LuResult<bool> _EditSingleById(pk_guid model, PkGuidAddDbo update, LuUtilsDbContext db, DbSet<pk_guid> table)
83
+        {
84
+            return LuResult<bool>.Ok(true);
80
         }
85
         }
81
     }
86
     }
82
 }
87
 }

+ 2
- 2
TestUtils/Utils/LuCoreUtilsExtensionsTest.cs Просмотреть файл

7
     public class LuCoreUtilsExtensionsTest
7
     public class LuCoreUtilsExtensionsTest
8
     {
8
     {
9
         [Fact]
9
         [Fact]
10
-        public void TestStringToGuidNull()
10
+        public void TestStringToOptGuidNull()
11
         {
11
         {
12
             string str = null;
12
             string str = null;
13
-            Assert.Null(str.ToGuid());
13
+            Assert.Null(str.ToOptGuid());
14
         }
14
         }
15
 
15
 
16
         [Fact]
16
         [Fact]

Загрузка…
Отмена
Сохранить