Microsoft.Data.SqlClient.SqlException(0x80131904):A connection was successfully established with the server, but then an error occurred during the login process.(provider:SSLProvider,error:0-La cadena de certificación fue emitida por una entidad en la que no se confía.)
Si les sale este error, deben agregar TrustServerCertificate=True en el fnal de su DataSource así:
Donde dice (local) si no les toma tienen que ir y tomar el nombre de su servidor (eso lo consiguen al abrir el SQL Server y la ventana que aparece al conectar les dice el nombre del servidor ese les toma seguro
Gran aporte. Muchas gracias. Fue de gran ayuda.
Toma tu Like. Llevaba unos dias intentando lograrlo y no encontraba la respuesta en ningun lado. Fue de gran ayuda. Crack
Nota: como yo levante un Docker de Postgres estoy utilizando el puerto 55000, pero por defecto el puerto de Postgres es 5423.
Excelente aporte!
Estoy buscando la manera de hacerlo pero con MySQL, aun no he podido, si alguien sabe podría decirme como :3
Esto se hace cuando no se tiene la DB. Si ya se tiene la DB, se puede utilizar un tool de EF para generar el contexto, este es el comando: dotnet ef dbcontext scaffold "Data Source=DBServer;User ID=User;Password=Pass;Initial Catalog=DBb;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False" Microsoft.EntityFrameworkCore.SqlServer -o FolderForModels -c "ContextFileName" --force
voy a probarlo, muchas gracias.
Buen aporte, gracias.
Mi solución utilizando PostgreSQL 10.5 juntamente con Docker:
Resultado:
Gracias men, me ayudo los pantallazos estaba estancado en SQL server me pase a PostgreSQL
Me podrias compartir el repositorio para ver la conexion a detalle tambien la estructura del proyecto.
Por si alguien tiene duda de como se hace con docker, les dejo indicaciones ☺️☺️📌📌
Archivo > docker-compose.yml
Si quieren pueden quitar la sección de command debido a que el endpoint que utiliza el profesor ya crea la base de datos
y para conectarse en el archivo de >** Program.cs **
solamente necesitan agregar lo siguiente
De ahi solo queda probar el endpoint y espero que todo les funcione bien 😊😊😊
Te rifaste! Buenisima!
Idolaaaaa 🔥
La conexión dentro del program.cs es una mala práctica. Sin embargo, en la siguiente clase se utiliza el archivo appsettings para pasar la conexion de base de datos.
Exactamente.
Lo mejor seria tener tu clase Startup donde configure todos tus servicios entre ellos el propio EF y luego pasar el nombre de tu cadena de conexión que lo recomendable seria que venga de un archivo de configuración como el appsetting.
En esta linea accedemos a una bd local pero con las credenciales de windows
Correcto, realiza la autenticación integrada a la maquina local donde se esta ejecutando el proyecto. buen aporte!
en mi caso utilicé esta misma con una variación debido a que tengo más de una instancia de SqlServer en mi sistema y la que utilizo en mi proyecto Platzi no es la instancia por defecto:
builder.Services.AddSqlServer<TareasContext>("initial catalog=TareasDB;data source=NOMBRESERVIDOR\NOMBREINSTANCIA;Connect Timeout=360;integrated security=yes");
Si quieres usar MySql:
Instala el paquete MySql.EntityFrameworkCore Ojo que no sea MySql.Data.EntityFrameworkCore
Al momento de acceder al endpoint me da el siguiente error: "Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
System.MissingMethodException: Method not found: 'System.String Microsoft.EntityFrameworkCore.Diagnostics.RelationalStrings.get_NoConnectionOrConnectionString()'."
Vi muchos comentarios sobre el conexion string de SqlServer para autenticar con windows y como ninguno me sirvio abri el "Visual Studio" IDE y me fije en el SQLObjectExplorer y obtuve directametne de ahi la cadena y esto fue lo que me dio
El server name seria el que indica el profesor y yo agregue el Initial Catalog=TasksDB; porque no viene, el profesor esta usando TareasDb.
Graciaaaas!!!! Al fin me resultó pipipi.
Me salvaste, gracias
Nuevamente pregunto en que momento explicaron como descargar/instalar SQL Server, se que este no es un curso de SQL, pero creo que lo mínimo es que expliquen como se instalan todos las herramientas que se van a ocupar en el curso y no solo dar por hecho que el alumno ya lo sabe
Opino lo mismo, pero la cuestión es que al inicio pide unos prerrequisitos y entre ellos está el tema de SQL Server, es como si alguien dijera "En que momento instalo Visual Studio Code o Postman".
En esta pagina pueden encontrar diferentes connection strings, para diferentes lenguajes y tecnologias. Espero les sea de utilidad, con esta pude encontrar la conexion para utilizar en el caso de postgresSQL.
Para postgres, en el archivo appsettings.json, hice la configuración de la conexión hacia la base de datos.
"ConnectionStrings":{"PostgresSQLConnection":"Server= 127.0.0.1; Port=5432; Database=TareasDB; User Id=postgres; Password=postgres"}
Luego en Program.cs se realiza la configuración usando la conexión creada :
La parte del adminer es para no estar manejando ese programas de SQL Server Management Studio y tener una versión ligera en el navegador.
Use las siguientes credenciales:
System:MSSQL(beta)Server:sqlserver(mantén este)Username:SA(mantén este)Password:MySecret123!(asegúrate de poner la contraseña)Database:TareasDB(o déjalo vacío)
Y modifique el archivo Program.cs
using Microsoft.EntityFrameworkCore;using projectef;var builder =WebApplication.CreateBuilder(args);builder.Services.AddDbContext<TaskContext>(options=>{ options.UseSqlServer("Server=localhost,1433;Database=TareasDB;User Id=SA;Password=MySecret123!;TrustServerCertificate=true;MultipleActiveResultSets=true");});var app = builder.Build();app.MapGet("/",()=>"Hello World!");app.MapGet("/dbConnection",async(TaskContext dbContext)=>{try{// Obtener el nombre de la base de datosvar databaseName = dbContext.Database.GetDbConnection().Database;// Verificar si la base de datos fue creada o ya existíavar wasCreated =await dbContext.Database.EnsureCreatedAsync();var message = wasCreated
? $"Base de datos '{databaseName}' creada exitosamente": $"Base de datos '{databaseName}' ya existe y está lista";returnResults.Ok(new{ success =true, databaseName = databaseName, wasCreated = wasCreated, message = message, timestamp =DateTime.Now});}catch(Exception ex){returnResults.Problem($"Error: {ex.Message}");}});app.Run();
Lo demás fue apoyo con Winsurf.
por último revisen bien el código, ya que modifique algunas palabras para que están en inglés.
A alguien le arroja este error, estoy realizando el proyecto desde wsl v2, con ubuntu 20.04
Que motor de base de datos estas usando? revisas que si tengas bnien configurado usario y contraseña.
Estoy usando Oracle y cuando voy a Postman y ejecuto el get al endpoint
http://localhost:5129/dbconexion"
no sucede nada, es decir, no obtengo un error pero no se crean las tablas, en cambio, cuando desde la terminal de Visual Studio Code ejecuto
dotnet ef database update
Las tablas son creadas correctamente.
¿Por qué no puedo realizar la prueba con Postman?
Por favor puedes compartir el código que se ejecuta al llamar dbConexion? oracle es una bas de datos demasiado robusta y no estoy seguro que puede necesitar alguna configuración especial.
cual seria la diferencia entre AddDbContext y AddSqlServer? teniendo en cuenta que para utilizar sql server lo puedo cambiar dentro de la expresión lampad
AddSqlServer es un servicio hecho especificamente para SQL server esa es la unica diferencia.
Hola,
Yo tambien creo que desde la funcionalidad:
AddDbContext es para mapear las clases, y llevarlas como contexto a tablas, y atributos en Memoria.
AddSqlServer es para mapear las clases, y llevarlas como contexto a tablas, y atributos en SQL Server, lo que permite gestionar la base de datos concreta desde SSMS
Alguno de ustedes pudo hacer la conexion con postgreSQL?
No me deja conectar
¡Hola! :D
¿Cuál es el problema que tienes?, ¿en qué te puedo ayudar? Compártenos el error. Puedes adjuntar imágenes arrastrándolas a esta ventana de comentario.
Nunca pares de aprender 💚
Cuando utilices PostreSQL debes instalar los nuget que correspondan con ese motor de BD y al instanciar el método debes usar AddNpgsql en lugar de AddSqlServer.
Espeto haber ayudado, saludos
Como se puede hacer para que en la BD se almacene en DataTime o en Date... y no en datetime2??
en fluent API debe especificar el type de la base datos usando el método:
.HasColumnType("datetime2");