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; }
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; }
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(); }