Cambiar de base de datos es relativamente fácil, primero cambiaremos la base de datos a un SQL Server local y luego un SQL Server en Azure
1) Agrega el siguiente paquete Nuget
Install-Package Microsoft.EntityFrameworkCore.SqlServer
2) Creamos la base de datos en sql server y nuestros usuarios administrador y de lectura
CaducaSQLBD.sql//Creamos la base de datosCREATE DATABASE caducaGO//Creamos un login para el usuario administradorCREATE LOGIN AdminCaduca WITH PASSWORD = 'StKRV6MR6A'GO//Creamos un login para el usuario de lecturaCREATE LOGIN SistemaCaduca WITH PASSWORD = 'xADcUaP5cs'GO//Cambiamos a la base de datosUSE caducaGO//Creamos los usuarios administrador y de sistemaCREATE USER AdminCaduca FOR LOGIN AdminCaduca;CREATE USER SistemaCaduca FOR LOGIN SistemaCaduca;//Agregamos el permiso al usuario administrador de db_owner el cual//tiene acceso total a la base de datosALTER ROLE db_owner ADD MEMBER AdminCaduca;//Agregamos los roles de escritura y lectura para el// usuario de sistemaALTER ROLE db_datareader ADD MEMBER SistemaCaduca;ALTER ROLE db_datawriter ADD MEMBER SistemaCaduca;
3) Agregamos una nueva cadena de conexión en nuestro archivo appsettings.json con el nombre SQLServerConnection
appsettings.json{"ConnectionStrings": {"DefaultConnection": "server=localhost;port=3306;database=caduca;user=AdminCaduca;Password=StKRV6MR6A;sslMode=none","SQLServerConnection": "Server=localhost;Database=caduca;User Id=AdminCaduca;Password=StKRV6MR6A;"},//...}
4) Cambiamos nuestro archivo Startup.cs para que utilice Sql Server, dejamos comentada nuestra conexión MySQL por si deseamos regresar a MySQL y nuestra nueva cadena de conexión
Startup.cspublic void ConfigureServices(IServiceCollection services){//Código//Conexión MySQL//services.AddDbContext<CaducaContext>(options =>//options.UseMySql(Configuration.GetConnectionString//("DefaultConnection")));//Conexión SQL Serverservices.AddDbContext<CaducaContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("SQLServerConnection")));}
5) Modificamos nuestra migración para que cree correctamente el campo autoincrement, ya que se agrego una notación especial para MySQL (.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn)) agregamos el código para generar el identity en sql Server .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn)
Migracion_TablaProducto.csmigrationBuilder.CreateTable(name: "Producto",columns: table => new{Id = table.Column<int>(nullable: false).Annotation("SqlServer:ValueGenerationStrategy",SqlServerValueGenerationStrategy.IdentityColumn),// .Annotation("MySql:ValueGenerationStrategy"//, MySqlValueGenerationStrategy.IdentityColumn),}
También modificamos la migración de la TablaCategoría de la misma forma
6) Ejecutamos el comando Update-Database en la Consola del Administrador de Paquetes
Listo hemos cambiado la base de datos a SQL Server.