Example #1
0
 public int Merge(string key, IEdmEntityObject entity)
 {
     string cmdTemplate = "update [{0}] set {1} where [{2}]=@{2} ";
     var entityType = entity.GetEdmType().Definition as EdmEntityType;
     if (this.PermissionCheck != null && !this.PermissionCheck(MethodType.Merge, entityType.Name))
     {
         throw new UnauthorizedAccessException();
     }
     var keyDefine = entityType.DeclaredKey.First();
     List<string> cols = 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}]=@{0}", p));
         sqlpars.Add(new SqlParameter("@" + p, v));
     }
     if (cols.Count == 0)
         return 0;
     sqlpars.Add(new SqlParameter("@" + keyDefine.Name, key.ChangeType(keyDefine.Type.PrimitiveKind())));
     int rtv;
     using (DbAccess db = new DbAccess(this.ConnectionString))
     {
         rtv = db.ExecuteNonQuery(string.Format(cmdTemplate, entityType.Name, string.Join(", ", cols), keyDefine.Name)
             , (dbpars) =>
             {
                 dbpars.AddRange(sqlpars.ToArray());
             }, CommandType.Text);
     }
     return rtv;
 }
Example #2
0
        public int Replace(string key, IEdmEntityObject entity)
        {
            string cmdTemplate = "update [{0}] set {1} where {2} ";
            var entityType = entity.GetEdmType().Definition as EdmEntityType;
            if (this.PermissionCheck != null && !this.PermissionCheck(MethodType.Replace, entityType.Name))
            {
                throw new UnauthorizedAccessException();
            }
            var keyName = entityType.DeclaredKey.First().Name;
            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 entityType.Properties())
            {
                entity.TryGetPropertyValue(p.Name, out v);
                cols.Add(string.Format("[{0}]", p.Name));
                pars.Add("@" + p.Name);
                sqlpars.Add(new SqlParameter("@" + p.Name, v == null ? DBNull.Value : v));
            }
            int rtv;
            using (DbAccess db = new DbAccess(this.ConnectionString))
            {
                rtv = db.ExecuteNonQuery(string.Format(cmdTemplate, entityType.Name, string.Join(", ", cols), string.Join(", ", pars))
                    , (dbpars) =>
                    {
                        dbpars.AddRange(sqlpars.ToArray());
                    }, CommandType.Text);
            }
            return rtv;
        }
Example #3
0
 public int Delete(string key, IEdmType elementType)
 {
     var entityType = elementType as EdmEntityType;
     if (this.PermissionCheck != null && !this.PermissionCheck(MethodType.Delete, entityType.Name))
     {
         throw new UnauthorizedAccessException();
     }
     var keyDefine = entityType.DeclaredKey.First();
     int rtv = 0;
     using (DbAccess db = new DbAccess(this.ConnectionString))
     {
         rtv = db.ExecuteNonQuery(string.Format("delete {0}  where [{1}]=@{1}", entityType.Name, keyDefine.Name)
               , (dbpars) =>
               {
                   dbpars.AddWithValue("@" + keyDefine.Name, key.ChangeType((keyDefine.Type.PrimitiveKind())));
               }, CommandType.Text);
     }
     return rtv;
 }