Exemplo n.º 1
0
            public void UpdateState(string key, object state, ISessionTransaction transaction)
            {
                DbTransaction t = (DbTransaction)transaction;

                using (IDbCommand cmd = t.Connection.CreateCommand()) {
                    cmd.CommandText = (state == null ? SQL_DELETE : SQL_UPDATE);

                    IDataParameter p_id = cmd.CreateParameter(), p_key = cmd.CreateParameter();
                    p_id.ParameterName  = "id";
                    p_key.ParameterName = "key";
                    p_id.Value          = _id;
                    p_key.Value         = key;
                    cmd.Parameters.Add(p_id);
                    cmd.Parameters.Add(p_key);

                    if (state != null)
                    {
                        IDataParameter p_data = cmd.CreateParameter();
                        p_data.ParameterName = "data";
                        using (MemoryStream ms = new MemoryStream()) {
                            BinaryFormatter formatter = new BinaryFormatter();
                            formatter.Serialize(ms, state);
                            ms.Close();
                            p_data.Value = ms.ToArray();
                        }
                        cmd.Parameters.Add(p_data);
                    }

                    cmd.ExecuteNonQuery();
                }
            }
Exemplo n.º 2
0
            public object ReadState(string key, ISessionTransaction transaction)
            {
                DbTransaction t = (DbTransaction)transaction;

                using (IDbCommand cmd = t.Connection.CreateCommand()) {
                    cmd.CommandText = SQL_SELECT;

                    IDataParameter p_id = cmd.CreateParameter(), p_key = cmd.CreateParameter();
                    p_id.ParameterName  = "id";
                    p_key.ParameterName = "key";
                    p_id.Value          = _id;
                    p_key.Value         = key;
                    cmd.Parameters.Add(p_id);
                    cmd.Parameters.Add(p_key);

                    using (IDataReader reader = cmd.ExecuteReader()) {
                        if (reader.Read())
                        {
                            try {
                                BinaryFormatter formatter = new BinaryFormatter();
                                using (MemoryStream ms = new MemoryStream((byte[])reader.GetValue(0))) {
                                    return(formatter.Deserialize(ms));
                                }
                            } catch {}
                        }
                    }
                }
                return(null);
            }
Exemplo n.º 3
0
 public void UpdateState(string key, object state)
 {
     using (ISessionTransaction transaction = DbTransaction.Create(this, _create, IsolationLevel.Serializable)) {
         UpdateState(key, state, transaction);
     }
 }