Daniel Paggiola
Francisco Murillo
Esteban Gutierrez Peña
Andres Felipe Zuluaga Arcila
Juan Andrade
JOEL OMAR ROCHA RODRIGUEZ
Miguel Teheran
ProfesorVicente Estrada Domínguez
Luis Alvarez
Dyck Javier López Silva
Lautaro Martinez
Platzi Team
Víctor Manuel Díaz Suárez
gustavoalonsolondoobetancourt
Luis Alvarez
Rodrigo Jesús Miguel Sánchez Romero
Miguel Teheran
ProfesorRodrigo Jesús Miguel Sánchez Romero
Israel Santander Mendoza Bañuelos
David Cuellar
Lautaro Martinez
Cesar Bautista Mejia
Carlos Gomez
Miguel Teheran
ProfesorSebastián Sebastian NavarroC.
Miguel Teheran
ProfesorJesús Marcano
Miguel Teheran
ProfesorPara utilizar la autenticación de Windows en SQL Server Management Studio se debe utilizar:
<code> "ConnectionStrings": { "cnTareas":"Data Source=.\\SQLEXPRESS;Database=TareasDB;Integrated Security=True" }
Para quien lo este haciendo en postgres, quedaria asi:
//program.cs builder.Services.AddNpgsql<TaskContext>(builder.Configuration.GetConnectionString("TaskDb")); //archivo appsettings.json "ConnectionStrings": { "TaskDb" :"Server=postgreServer;Database=StringEF;Port=5430;Username =my_user;Password=root;Host=localhost;" }
Gracias, una pregunta y si yo quisiera conectarme a una base de datos que cree en Postgrest pero lo hice con un docker, la conexion seria la misma?
Les comparto el siguiente link donde encontraran cómo guardar secretos en la aplicación y así evitar que nuestro password quede almacenado en el sistema de control de fuentes (en mi caso git).
https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-6.0&tabs=linux
¿Quieres setear valores por defecto en SQL Server? Lee la doc.: Fluent API
¿Cuál es la linea de código que hace que se genere automáticamente las tablas con todos sus atributos?
dotnet ef database update
https://learn.microsoft.com/en-us/dotnet/csharp/ les comparto la documentacion oficial
Oye broo, actualiza este curso.
Para los que tengan problemas de conexión por temas de seguridad.
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "cnTareas" : "Data Source=SCLNTB6747865;Initial Catalog=TareasDb;user id=luis;password=sds;MultipleActiveResultSets=true;TrustServerCertificate=True;encrypt=false" } } ```Luego debe irse a las propiedades DEL USUARIO y modificar las opciones que aparecen en la imagen
Por si alguien necestita, esta sería la configuración para Mysql. "ConnectionStrings": {var connectionString = builder.Configuration.GetConnectionString("Conexiontareas");
"ConnectionStrings": { "Conexiontareas": "server=localhost;database=database;user=usuario;password=password;" }
Y en el program
var connectionString = builder.Configuration.GetConnectionString("Conexiontareas"); "Conexiontareas": "server=localhost;database=database;user=usuario;password=password;" } builder.Services.AddDbContext<AdminGymContext>(options => options.UseMySQL(connectionString) );
"Conexiontareas": "server=localhost;database=database;user=usuario;password=password;"
}
builder.Services.AddDbContext<AdminGymContext>(options =>
options.UseMySQL(connectionString)
);
Yo utilice el package de MySQL.EntityFrameworkCore y me sirvió esta manera también:
builder.Services.AddMySQLServer<ToDoContext>(builder.Configuration.GetConnectionString("MySQLConnection"));
Agregando conexión al archivo appsettings
Para agregar una capa de seguridad en nuestra aplicativo y que los datos de conexion a nuestra base de datos no queden insertado como una cadena en el codigo, podemos hacer uso del archivo appsettings.json
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "cnHomework": "Server=localhost;Database=TareasDB;User Id=SA;Password=mySecret1234;MultipleActiveResultSets=true;" } }
Creamos nuestra llave valos dentro de ConnectionStrings con el nombre que nosotros queramos darle, en mi caso cnHomework y aqui vamos a poner nuestra cadena de conexion
En el archivo Program.cs vamos a hacer uso de la clase Configuration para llamer a nuestra cadena accediendo al nombre que le hallamos dado, quedando de la siguiente manera:
builder.Services.AddSqlServer<HomeworkContext>(builder.Configuration.GetConnectionString("cnHomework"));
Levantamos nuevamente nuestra aplicacion y debe funcionar sin problema.
Hay que tener en cuenta también el uso de User Secrets que es muy útil cuando estamos desarrollando.
¿Que son User Secrets? User secrets son datos especificos que contienen información sensible tales como contraseñas de administrador, claves de API, cadenas de conexión,etc… por lo que necesitamos mantenerlas fuera de nuestro repositorio.
Secret Manager es una herramienta que permite guardar user secrets en un archivo fuera del código fuente de nuestra aplicación.
Ahora podemos agregar todos los user secrets que necesitemos.
Fuente: User Secrets en ASP.NET Core
Tambien puedes usar: Results.Ok("Base de datos en memoria "+ dbContext.Database.IsSqlServer()); Para cer la conexion en true en postman
Siempre abusen el dotnet build "nombre del proyecto" para saber que problema tienen de raiz
Hay formas de realizar conexiones a una base de datos con entity framework?
hola Rodrigo para en este curso se incluyen los pasos para conectar EF con una base de datos
Disculpen, falto la palabra Oracle jeje
Fck de haber sabido un video antes haha, ya lo conecté a sqlite3 y me costó un huevo xd
para conectar con **Postgree **SQL builder.Services.AddDbContext<TareasContext>(options => options.UseNpgsql("Server=url;Database=abcdfe;User Id=abcdfs;Password=dada por el proveedor;"));
En mi caso use https://www.elephantsql.com/
Yo utilicé el package de MySql.EntityFrameworkCore y me pude conectar con cualquiera de estas 2 opciones:
builder.Services.AddMySQLServer<ToDoContext>(builder.Configuration.GetConnectionString("MySQLConnection"));
donde ves < y > es que van los signos de menor y mayor que, solo que en los comentarios de platzi no se escaparlos y se transforman automáticamente.
Opción 2:
builder.Services.AddDbContext<ToDoContext>( dbContext => dbContext.UseMySQL(builder.Configuration.GetConnectionString("MySQLConnection")));
builder.Configuration.GetConnectionString("cnTareas")
Es bueno para desarrollo, QA y Testing, pero ¿cual es la opción correcta en producción?
Se le pueden pasar parámetros a GetConnectionString? Para autenticar usuarios de BD y no dejar el usuario y la contraseña del usuario super administrador en la app...
Realmente esa ya no es una buena practica lo correcto es hacer un buen uso de los secretos. En azure por ejemplo se puede usar AzureKeyVault, acá hay un excelente articulo al respecto para hacerlo local y no ponerlo directamente en el appsettings, recuerda nunca subir eso a git, solo sobreescribir el archivo localmente. https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-7.0&tabs=windows
C:\platzi\projectef\TareasContext.cs(3,29): error CS0246: El no text' no se encontró (¿falta una directiva using o una referenc ctef.csproj] C:\platzi\projectef\TareasContext.cs(6,12): error CS0246: El no <>' no se encontró (¿falta una directiva using o una referencia ef.csproj] C:\platzi\projectef\TareasContext.cs(6,18): error CS0246: El no oria' no se encontró (¿falta una directiva using o una referenc ctef.csproj] C:\platzi\projectef\Models\Categoria.cs(15,36): error CS0246: E area' no se encontró (¿falta una directiva using o una referenc ctef.csproj] C:\platzi\projectef\TareasContext.cs(8,12): error CS0246: El no <>' no se encontró (¿falta una directiva using o una referencia ef.csproj] C:\platzi\projectef\TareasContext.cs(8,18): error CS0246: El no ' no se encontró (¿falta una directiva using o una referencia d .csproj] C:\platzi\projectef\TareasContext.cs(10,26): error CS0246: El n ntextOptions<>' no se encontró (¿falta una directiva using o un ctef\projectef.csproj]
ERROR al compilar.
Depronto titne el código en git para verlo mejor? no encuentro el error.
¿Por qué es más seguro colocar la cadena de conexión en appsettings.json?
al ser un archivo aislado del proyecto se puede agregar seguridad especial para que no pueda ser accedido. Aparte de esto en los servicios de la nube permite sobreescribir los vlaores que se tiene en el archivo utilizando variables de entorno y guardando los secretos en servicios como Azure KeyVault aumentando aun mas la seguridad