Example #1
0
        public long Insert(Model.Model model)
        {
            var cmd = new MySqlCommand {
                Connection = _getConnection()
            };
            var attributes = model.GetAttributes();

            cmd.CommandText = "INSERT INTO " + model.TableName() + " VALUES(@" +
                              string.Join(",@", attributes.Keys) + ")";

            cmd.Prepare();

            foreach (var(key, value) in attributes)
            {
                cmd.Parameters.AddWithValue("@" + key, value);
            }

            cmd.ExecuteNonQuery();

            model.GetPrimaryColumnProperty().SetValue(model, cmd.LastInsertedId);

            return(cmd.LastInsertedId);
        }
Example #2
0
        public long Update(Model.Model model)
        {
            var attributes    = model.GetAttributes();
            var oldAttributes = model.OriginAttributes;


            var changedAttributes = new Dictionary <string, object>();

            foreach (var(columnName, value) in attributes)
            {
                if (!value.Equals(oldAttributes[columnName]))
                {
                    changedAttributes.Add(columnName, value);
                }
            }

            var primaryColumnName = model.GetPrimaryColumnName();
            var cmd = new MySqlCommand {
                Connection = _getConnection()
            };

            var sql = "UPDATE " + model.TableName() + " SET";

            cmd.CommandText  = changedAttributes.Keys.Aggregate(sql, (current, attributesKey) => current + " " + attributesKey + "=@" + attributesKey);
            cmd.CommandText += " where " + primaryColumnName + "=@_primaryValue";

            foreach (var(key, value) in changedAttributes)
            {
                cmd.Parameters.AddWithValue("@" + key, value);
            }

            cmd.Parameters.AddWithValue("_primaryValue", oldAttributes[primaryColumnName]);

            cmd.ExecuteNonQuery();

            return(cmd.LastInsertedId);
        }