소스 검색

[WebApiUtils] Get object by primary key

feature/authentication-tests
Robin Thoni 10 년 전
부모
커밋
b7338ce60c
1개의 변경된 파일19개의 추가작업 그리고 7개의 파일을 삭제
  1. 19
    7
      WebApiUtils/BusinessManager/SqlServerManager.cs

+ 19
- 7
WebApiUtils/BusinessManager/SqlServerManager.cs 파일 보기

192
             return Add(DboToDbStatic(obj));
192
             return Add(DboToDbStatic(obj));
193
         }
193
         }
194
 
194
 
195
+        /// <summary>
196
+        /// Get an object by its primary key(s)
197
+        /// </summary>
198
+        /// <param name="pairs">The key names and values</param>
199
+        /// <returns>The object</returns>
200
+        public static OpResult<TDbObject> GetByPrimary(params KeyValuePair<string, object>[] pairs)
201
+        {
202
+            var param = Expression.Parameter(typeof(TDbObject), "x");
203
+            Expression totalExp = null;
204
+            foreach (var pair in pairs)
205
+            {
206
+                var equalExp = Expression.Equal(Expression.Property(param, pair.Key), Expression.Constant(pair.Value));
207
+                totalExp = totalExp == null ? equalExp : Expression.And(equalExp, totalExp);
208
+            }
209
+            var lambda = Expression.Lambda<Func<TDbObject, bool>>(totalExp, param);
210
+            return GetSingle(lambda);
211
+        }
212
+
195
         /// <summary>
213
         /// <summary>
196
         /// Get an object by its id
214
         /// Get an object by its id
197
         /// </summary>
215
         /// </summary>
199
         /// <returns>The object</returns>
217
         /// <returns>The object</returns>
200
         public static OpResult<TDbObject> GetById(long id)
218
         public static OpResult<TDbObject> GetById(long id)
201
         {
219
         {
202
-            var param = Expression.Parameter(typeof(TDbObject), "x");
203
-            var exp = Expression.Lambda<Func<TDbObject, bool>>(
204
-                Expression.Equal(
205
-                    Expression.Property(param, "id"),
206
-                    Expression.Constant(id)
207
-                ), param);
208
-            return GetSingle(exp);
220
+            return GetByPrimary(new KeyValuePair<string, object>("id", id));
209
         }
221
         }
210
 
222
 
211
         /// <summary>
223
         /// <summary>

Loading…
취소
저장