public List<Entity> allEntities(Type typeEntity)
 {
     Entity entity = (Entity)Activator.CreateInstance(typeEntity);
     Query query = new Query(entity.NameTable);
     query.addTypeQuery(TypeQuery.select);
     return executeSelectQuery(query, typeEntity);
 }
 public void deleteEntity(Entity entity)
 {
     if (entity.ID == -1)
     {
         return;
     }
     Query query = new Query(entity.NameTable);
     query.addTypeQuery(TypeQuery.delete)
             .addCondition(Entity.PrimaryKey(), "=", entity.ID.ToString());
     executeDeleteQuery(query);
 }
 public void saveEntity(Entity entity)
 {
     Query query = new Query(entity.NameTable);
     List<object> binaryArray = new List<object>();
     Dictionary<string, string> changedValues = new Dictionary<string, string>();
     PropertyInfo []properties = entity.GetType().GetProperties();
     Dictionary<string, string> mappingTable = entity.mappingTable();
     Dictionary<string, Type> serializationParameters = entity.serializationParameters();
     foreach (PropertyInfo property in properties)
     {
         if (mappingTable.ContainsKey(property.Name) && property.Name != Entity.PrimaryKey())
         {
             if (serializationParameters.ContainsKey(property.Name))//(property.GetValue(entity).GetType().IsArray && property.GetValue(entity).GetType().GetElementType() == typeof(byte))
             {
                 if (property.GetValue(entity) != null)
                 {
                     BinaryFormatter serializer = new BinaryFormatter();
                     changedValues.Add(mappingTable[property.Name], "@data" + binaryArray.Count.ToString());
                     using (var ms = new MemoryStream())
                     {
                         serializer.Serialize(ms, property.GetValue(entity));
                         binaryArray.Add(ms.ToArray());
                     }
                 }
             }
             else
             {
                 changedValues.Add(mappingTable[property.Name], property.GetValue(entity).ToString());
             }
         }
     }
     if (entity.ID == -1)
     {
         query.addTypeQuery(TypeQuery.insert);
     }
     else
     {
         query.addTypeQuery(TypeQuery.update)
             .addCondition(Entity.PrimaryKey(), "=", entity.ID.ToString());
     }
     query.setChangedValues(changedValues);
     int insertId = executeUpdateInsertQuery(query, binaryArray);
     if (entity.ID == -1)
     {
         entity.ID = insertId;
     }
 }
 public Entity entityById(int id, Type typeEntity)
 {
     Entity entity = (Entity)Activator.CreateInstance(typeEntity);
     Query query = new Query(entity.NameTable);
     query.addTypeQuery(TypeQuery.select)
             .addCondition(Entity.PrimaryKey(), "=", id.ToString());
     List<Entity> list = executeSelectQuery(query, typeEntity);
     if (list.Count > 0)
     {
         return list[0];
     }
     return null;
 }