¿Cómo eliminar las sesiones o conexiones sobre una Base de datos en SQL Server?

Cuando deseamos eliminar una base de datos algunas veces Sql Server no nos lo permite ya que la base de datos está siendo utilizada. Esto puede ser por sistemas que no cierran la conexión o procesos que están conectándose las 24 horas del día.

Para eliminar las conexiones, primero debemos saber cuáles son, y para ello puedes ejecutar la siguiente consulta, remplazando el nombre de tu base de datos en la instrucción Where.


SELECT   *
FROM     sys.dm_exec_sessions
WHERE    DB_NAME(database_id) = 'Nombre_De_Tu_BaseDeDatos'

Una vez que hemos obtenido algo parecido a la siguiente lista:

Debemos ejecutar la función Kill seguida del número de la sesión (el primer campo de la imagen) a eliminar:


KILL 97

Y listo, de esa manera se elimina un proceso que nunca fue cerrado.

¿Cómo aplicar un update a varias filas por medio de EntityFramework.Extended? C# .Net

Existen varias formas de modificar varios elementos en conjunto por medio de Entity Framework.

Aquí te muestro como hacerlo sin utilizar una librería externa, es decir, modificar varios objetos sin EntityFramework.Extended.

Igual te recuerdo que utilizar EntityFramework.Extended como Entity Framework nativo no las recomiendo cuando vas a modificar más de mil datos, mejor utiliza un procedimiento almacenado.

La ventaja que veo al utilizar EntityFramework.Extended es un aspecto de sintaxis ya que de esta manera evitamos hacer el recorrido de los elementos e ir modificando objeto por objeto, con esta librería es de una forma más sencilla para el programador.

Para el siguiente ejemplo,  supongamos que tenemos una tabla llamada Persona, que debemos modificar la edad a 10 años de todas las personas de Nombre “Juan”. Seria de la siguiente manera:


using(MiEntity db= new MiEntity()){

  //realizamos la modificación sin foreach, ni SaveChanges()
  db.Persona.Where(d => d.Nombre=="Juan")
 .Update(x => new Persona() { Edad = 10 });

}

De esta manera no necesitamos el método SaveChanges(), ya que Update lo hace internamente.

¿Cómo aplicar un update a varias filas por medio de Entity Framework? C# .Net

Existen varias formas de modificar varios elementos en conjunto por medio de Entity Framework.

Te mostrare como realizar una forma de cómo hacerlo a continuación. Teniendo una tabla llamada Persona, supongamos que debemos modificar la edad a 10 años de todas las personas de Nombre “Juan”. Seria de la siguiente manera:


using(MiEntity db= new MiEntity()){

  //Obtenemos todos los Juanes
  IQuearyable<Persona> lst = db.Persona.Where(d=>d.Nombre=='Juan');

  //recorremos la lista
  foreach(Persona oPersona in lst){
      //asignamos la edad
      oPersona.Edad=10;

  }

 //modificamos los datos en la base de datos
  db.SaveChanges();

}

Cuando tengas la necesidad de editar más de mil filas en un proceso, mejor hazlo con un procedimiento almacenado (Stored procedure).

Aquí te muestro otra forma de hacer la modificación de varios objetos utilizando EntityFramework.Extended.

¿Cómo sumar 1 día, 1 mes o 1 año a una fecha en mysql?

Cuando manejamos fechas con mysql tenemos a la disposición muchas funciones ya establecidas en el motor las cuales son útiles al realizar consultas.

Te muestro como puedes agregar 1 día, 1 mes o un año a una fecha en específico.

Utilizando la función Now() de mysql aplicare la suma como muestro a continuación:


-- 1 día
select  DATE(DATE_ADD(now(), INTERVAL 1 DAY))

-- 1 mes
select  DATE(DATE_ADD(now(), INTERVAL 1 MONTH))

-- 1 año
select  DATE(DATE_ADD(now(), INTERVAL 1 YEAR))

¿Cómo obtener el primer día y el último día del mes actual con C#?

Para obtener el primer día y ultima día del mes actual con C#, utilizaremos la funcionalidad de la clase DateTime.

Es muy útil conocer funcionalidad de este tipo, sobre todo cuando se hacen reportes y queremos que al entrar el usuario al módulo por defecto muestre solo lo del mes actual.

A continuación te muestro como hacerlo fácilmente:


//Primero obtenemos el día actual
 DateTime date = DateTime.Now;

//Asi obtenemos el primer dia del mes actual
DateTime oPrimerDiaDelMes = new DateTime(date.Year, date.Month, 1);

//Y de la siguiente forma obtenemos el ultimo dia del mes
//agregamos 1 mes al objeto anterior y restamos 1 día.
DateTime oUltimoDiaDelMes = oPrimerDiaDelMes.Value.AddMonths(1).AddDays(-1);

Ya teniendo el primer dia del mes y el ultimo dia del mes actual en los dos objetos DateTime, ahora puedes hacer uso de ellos en algun componente, por ejemplo un DateTimePicker.

¿Cómo detectar si un formulario ya ha sido abierto en Windows Form? C# .Net

Te mostrare como saber si un formulario de nuestra aplicación ya ha sido abierto.

Algunas veces tenemos la necesidad de que un formulario no sea abierto más de una vez, ya sea por requerimiento o por ser una modulo que deseamos que no se abra miles de veces.

La siguiente función recibe una cadena con el nombre de tu formulario como tal, si tu formulario se llama FrmUsuario entonces recibirá “FrmUsuario”:


public class FormUtils{

//función
        public static bool detectarFormularioAbierto(string formulario)
        {
            bool abierto = false;

            if (Application.OpenForms[formulario] != null)
            {
                abierto = true;
            }
            return abierto;
        }
}

Y seria utilizada de la siguiente manera:


bool estaAbierto=FormUtils.detectarFormularioAbierto("FrmUsuario");

¿Cómo obtener el valor de una celda de una fila seleccionada en un DataGridView de Windows Form? C# .Net

Para obtener el valor de una celda de una fila seleccionada a continuación te muestro una función que te regresara el valor como cadena, ese valor tu puedes parsearlo a el tipo de dato que necesites ya sea un entero, decimal etc.

La función recibe tu DataGridView como parámetro y el número de la posición de la celda deseada.

Recuerda que las celdas del DatGridView comienzan con el número 0, ya que se manejan igual que un arreglo.


public class DataGridViewUtils
{
 public static string GetValorCelda(DataGridView dgv, int num)
        {
            string valor = "";

            valor = dgv.Rows[dgv.CurrentRow.Index].Cells[num].Value.ToString();

            return valor;
        }
}

Para utilizar la función sería de la siguiente manera:


//Mandamos nuestro DataGridView y la posición deseada
string valor= DataGridViewUtils.GetValorCelda(dgv,0);

¿Cómo quitar la función de ordenamiento en un DataGridView de Windows Form? C# .Net

Para eliminar la funcionalidad de ordenamiento en un DataGridView, a continuación te muestro cómo es posible lograrlo:


 //creamos un datagridview para el ejemplo, pero en tu caso es el DataGridView que ya creaste en tu formulario, el cual ya tiene columnas.
 DataGridView dgv= new DataGridView();

 //recorremos todas sus columnas
 foreach (DataGridViewColumn Col in dgv.Columns)
 {
     Col.SortMode = DataGridViewColumnSortMode.NotSortable;
 }

¿Cómo centrar un control en Windows form C# .Net?

Para centrar un control cualquiera (Textbox, ComboBox, DataGridView ETC) que se encuentra en otro control por ejemplo un panel o un form, vamos a recurrir a un poco de matemáticas.

A continuación muestro con una función como es posible centrar un control respecto a su padre.


 public class ControlUtils
    {
        public static void centraX(Control padre, Control hijo)
        {
            int x = 0;

            //un poco de matematicas, restando los anchos y dividiendo entre 2
            x = (padre.Width/2)-(hijo.Width/2);

            //asignamos la nueva ubicación
            hijo.Location = new System.Drawing.Point(x,hijo.Location.Y);
        }
    }

Recuerda que todos los controles de Windows form heredan de la clase Control.

Para utilizarla sería de la siguiente manera:


//Suponiendo que es un textbox que se encuentra en un panel
ControlUtils.centraX(txtTextBox,panelContenedor);

¿Cómo utilizar transacciones con Entity Framework? C# .Net

Las transacciones son útiles cuando hablamos de base de datos y debemos hacer muchas consultas en conjunto, ya que nos permiten realizar un retroceso en la manipulación de datos si una de las consultas del conjunto falla.

Con Entity Framework es posible realizar transacciones, y no solo eso, sino que podemos tener el poder de realizar otras funciones distintas a manipulación de datos y decidir si fallan estas otras funciones aplicar un rollback.

A continuación te mostrare con un pequeño ejemplo.

Teniendo nuestro Entity Framework con el nombre MiEntity:


//creamos nuestro contexto
 using (var db = new MiEntity())
{
                //creamos el ámbito de la transacción
                using (var dbContextTransaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        //una consulta
                        tabla oTabla = new tabla();
                        oTabla.campo="pato";

			//agregamos el elemento
                        db.tabla.Add(oTabla);

			//otra consulta
                        tabla2 oTabla2 = new tabla2();
                        oTabla2.campo="pato";

			//agregamos otro elemento
                        db.tabla2.Add(oTabla2);

			//guardamos en la base de datos
                        db.SaveChanges();

                        //hacemos algo extra a manipulación de datos
			//como enviar un mail, suponiendo que regresa true si es exitoso
                        if (!EnviaUnMail())
                        {
                            //hacemos rollback si fallo el envio del mail
                            dbContextTransaction.Rollback();
                        }

                        //Hacemos commit de todos los datos
                        dbContextTransaction.Commit();

                    }
                    catch (Exception ex)
                    {
                        //hacemos rollback si hay excepción
                        dbContextTransaction.Rollback();

                    }
                }
}