コード例 #1
0
ファイル: SQLDataSource.cs プロジェクト: maskx/OData
        public int GetCount(ODataQueryOptions queryOptions)
        {
            var cxt = queryOptions.Context;
            var entityType = cxt.ElementType as EdmEntityType;
            if (this.PermissionCheck != null && !this.PermissionCheck(MethodType.Count, entityType.Name))
            {
                throw new UnauthorizedAccessException();
            }

            object rtv = null;
            using (DbAccess db = new DbAccess(this.ConnectionString))
            {
                rtv = db.ExecuteScalar(BuildSqlQueryCmd(queryOptions), null, CommandType.Text);
            }
            if (rtv == null)
                return 0;
            return (int)rtv;
        }
コード例 #2
0
ファイル: SQLDataSource.cs プロジェクト: maskx/OData
 public int GetFuncResultCount(IEdmFunction func, JObject parameterValues, ODataQueryOptions queryOptions)
 {
     int count = 0;
     IEdmType edmType = func.ReturnType.Definition;
     if (this.PermissionCheck != null && !this.PermissionCheck(MethodType.Count, func.Name))
     {
         throw new UnauthorizedAccessException();
     }
     if (TVFList.Contains(func.Name))
     {
         var target = BuildTVFTarget(func, parameterValues);
         var cmd = BuildSqlQueryCmd(queryOptions, target);
         using (DbAccess db = new DbAccess(this.ConnectionString))
         {
             var r = db.ExecuteScalar(cmd, null, CommandType.Text);
             if (r != null)
                 count = (int)r;
         }
     }
     return count;
 }
コード例 #3
0
ファイル: SQLDataSource.cs プロジェクト: maskx/OData
 public string Create(IEdmEntityObject entity)
 {
     var edmType = entity.GetEdmType();
     var table = (edmType.Definition as EdmEntityType).Name;
     if (this.PermissionCheck != null && !this.PermissionCheck(MethodType.Create, table))
     {
         throw new UnauthorizedAccessException();
     }
     object rtv = null;
     string cmdTemplate = "insert into [{0}] ({1}) values ({2}) select SCOPE_IDENTITY() ";
     List<string> cols = new List<string>();
     List<string> pars = new List<string>();
     List<SqlParameter> sqlpars = new List<SqlParameter>();
     object v = null;
     foreach (var p in (entity as Delta).GetChangedPropertyNames())
     {
         entity.TryGetPropertyValue(p, out v);
         cols.Add(string.Format("[{0}]", p));
         pars.Add("@" + p);
         sqlpars.Add(new SqlParameter("@" + p, v));
     }
     using (DbAccess db = new DbAccess(this.ConnectionString))
     {
         rtv = db.ExecuteScalar(string.Format(cmdTemplate, table, string.Join(", ", cols), string.Join(", ", pars))
             , (dbpars) =>
             {
                 dbpars.AddRange(sqlpars.ToArray());
             }, CommandType.Text);
     }
     return rtv.ToString();
 }