visual studio net framework for conectar con mysql entity-framework entity-framework-6

mysql - studio - ¿Cómo usar los tipos int/long sin firmar con Entity Framework?



mysql connector c# (1)

Resulta que Entity Framework no admite tipos de datos unsigned . Para las columnas uint , uno podría simplemente almacenar el valor en un tipo de datos firmado con un rango mayor (es decir, un long ). ¿Qué pasa con las columnas ulong ? La solución común no podría funcionar para mí porque no hay un tipo de datos firmados compatible con EF que pueda contener un ulong sin desbordarse.

Después de pensar un poco, descubrí una solución simple a este problema: simplemente almacene los datos en el tipo long compatible y ulong a ulong cuando acceda. Quizás esté pensando: "¡Pero espere, el valor máximo de ulong> el valor máximo de long!" Todavía puede almacenar los bytes de un ulong en un largo y luego volver a convertirlo en ulong cuando lo necesite, ya que ambos tienen 8 bytes. Esto le permitirá guardar una variable ulong en una base de datos a través de EF.

// Avoid modifying the following directly. // Used as a database column only. public long __MyVariable { get; set; } // Access/modify this variable instead. // Tell EF not to map this field to a Db table [NotMapped] public ulong MyVariable { get { unchecked { return (ulong)__MyVariable; } } set { unchecked { __MyVariable = (long)value; } } }

La conversión unchecked está unchecked para evitar excepciones de desbordamiento.

Espero que esto ayude a alguien.

Las propiedades de clase con el tipo de datos long se asignan correctamente al agregar una nueva migración (código primero), pero el proveedor de EF de mysql omite los tipos de datos ulong . ¿Cómo se mapea una propiedad para usar unsigned bigint de mysql?