A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de ASP.NET Core

Curso de ASP.NET Core

Juan Carlos Ruiz

Juan Carlos Ruiz

Usando una Base de Datos de verdad

31/35
Recursos

Aportes 34

Preguntas 13

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Para aquellos que no tienen la posibilidad de usar Azure por el tema de la tarjeta de cr茅dito, mi recomendaci贸n est谩 en usar SQL Server en local.

  1. Descargan el SQL Server aqu铆: https://www.microsoft.com/en-us/sql-server/sql-server-downloads
    Pueden elegir entre Developer Edition (es gratis) o el Express que tambi茅n es gratis, recomendado para este tipo de proyectos.
  2. Descargan el Microsoft SQL Server Management Studio 2019: https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15
    Esto equivale al 鈥淢ySQL Workbench鈥 o al 鈥淒beaver鈥, es un gestor para bases de datos, as铆 visualizas las tablas y todo lo dem谩s.

En el c贸digo, en la parte donde se pone la conexi贸n, es diferente al que pone el profesor, pues 茅l se conecta para un servidor en la nube b谩sicamente. Mi soluci贸n fue esta:


"ConnectionStrings": {
     "DefaultConnectionString": "Data Source=SERVIDOR;Initial Catalog=NOMBREBASEDEDATO;Integrated Security=true"
   }


El comando para copiar y pegar en el terminal es este:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Algo importante que comentar, y es algo que aprend铆 por experiencia (en el trabajo).

Cuando se modifica el archivo .gitignore para poder evitar que se suban archivos, pero en el caso del profe, eliminar uno que ya se hab铆a subido.

No basta s贸lo con editar el archivo .gitignore, tambien se deben ejecutar estos comandos en la consola de git:

git rm -r --cached .
git add .
git commit -m ".gitignore isnow working"
git push

Que chimbo que para crear una cuenta gratuita en azure se deba de colocar tarjeta de cr茅dito, una limitante, o hare con el gestor Sql server 2014, por el curso excelente

Les comparto la configuraci贸n por si gustan hacerlo con MySQL:

En el archivo [ appsettings.Development.json ]

{
  
  "ConnectionStrings": {
    "DefaultConnectionstring": "Server=localhost;Port=8889;Database=platzi;Uid=root;Pwd=root"
  },
  
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

En el archivo [ startup.cs ]

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            /*services.AddDbContext<EscuelaContext>(
                options => options.UseInMemoryDatabase(databaseName:"testDB")
                );*/
            
            string connString = ConfigurationExtensions.GetConnectionString(this.Configuration, "DefaultConnectionstring");
            services.AddDbContext<EscuelaContext>(
            options => options.UseMySQL(connString)
            );
        }

Es muy interesante porque solo tuve que crear la base de datos con el nombre platzi y al compilar el proyecto se crean las tablas en autom谩tico junto con el llenado de la informaci貌n que previamente ya realizamos.

Estuve siguiendo el curso y tuve problemas con las versiones para iniciar el proyecto cuando instale SqlServer, en mi caso se soluciono cuando al comando para agregar el package le agregue el flag 鈥-v 2.1.4鈥

Tuve el mismo inconveniente que @alexanderarmua, tambi茅n lo solucion茅 incrementando la versi贸n del package. El comando completo quedar铆a asi:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 2.1.4

Para los que reci茅n est茅n haciendo el curso con net core 6
me funciono usando

string connString = builder.Configuration.GetConnectionString("DefaultConnectionString");
builder.Services.AddDbContext<SchoolContext>(options => options.UseSqlServer(connString));

Una alternativa para la base de datos es creandola mediante docker

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=MiContr4$3帽a5egura!' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest

Y luego configurar la DefaultConnectionString as铆:

  "ConnectionStrings":{ "DefaultConnectionString": "Server=localhost;Database=MiBaseDeDatos;User Id=sa;Password=MiContr4$3帽a5egura!;"
  }

Me aparece el siguiente error:
SqlException: Invalid object name 鈥楨scuelas鈥.

Para realizar una migraci贸n o iniciar con una BD en blanco se puederealizar lo siguiente

    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet tool install --global dotnet-ef
    dotnet ef migrations add "descripcion o nombre de migracion" -o Data/Migrations  (-o carpeta destino)
    dotnet ef database update

No se si fue solo a mi pero en Azure no vi un plan gratuito para la DB por m谩s recursos m铆nimos que le puse.

Sugiero ense帽en a installar Docker o cualquier Gestor Express segun el hardware del cliente asi como se hizo para Visual Studio Code.

    "ConnStringDefault": "Data Source=CHANDRA;Initial Catalog=CursoPlatzi;Integrated Security=true"```
Con sql server express

Yo estoy en linux y no pude por ahora sacar la cuenta gratuita de Azure pero no tuve problemas ya que pude usar MSSQL Server en localhost con la version Developer de SqlServer 2017.

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-2017

Solo instal茅 la DBMS(el engine principal), sqlcmd y cree una database desde la terminal, para solo agregar la conecci贸n al string en Startup y appsettings.

Bueno, pero que pasa si ahora que estoy usando ya una base de datos persitida, quiero hacer alg煤n cambio en mi modelo de datos, suponiendo que estoy trabajando en un proyecto que va incluyendo cambios incrementales al sistema?
Si agrego o modifico campos en mi modelo o si llego a agregar nuevos modelos, como me aseguro de que esos cambios se reflejan en mi bd. Y si trabajo en un entorno de desarrollo/pruebas, como hago para reflejar los cambios cuando esos entren a producci贸n? 馃槼

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

La cadena de conexi贸n llega en null, ya recompile y nada

conString = ConfigurationExtensions.GetConnectionString(this.Configuration, "DefaultConnectionString");```

Se totea por el valor de null
por que puede pasar esto?

les recomiendo usar SQLite si no quieren complicarse la vida.

馃挭馃徑

CLI de .NET Core

dotnet add package provider_package_name```

PowerShell 

install-package provider_package_name


C# 

optionsBuilder.UseSqlServer(
鈥淪erver=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;鈥);


Utilizando PostgreSQL

string connString =  ConfigurationExtensions.GetConnectionString(this.Configuration,"DefaultConnection");

            services.AddDbContext<EscuelaContext>(
                options => options.UseNpgsql(connString)
            );

Como buena practica, todas las tablas son plurales. cuando haces el DbSet en el DbContext y todos los modelos son singulares.

No pude crear una base de datos SQL sin tener que pagar, usare localhost (que bueno que habia visto el curso de bases de datos antes de este jeje)

No pude crear la cuenta gratuita ya que requiere una tarjeta de cr茅dito.
驴Alguna alternativa? gracias.

una pregunta si las tablas tienen diferente nombre como es que intuye que pertenece al modelo鈥

Interesante

comandos y mas comandos.

En mi caso las clases heredaban el atributo UniqueId y fue necesario renombrarlo a Id para continuar con la convenci贸n y evitar un problema de HasNoKey.

Comparto mi cadena de conexi贸n para una instancia local sin requerir contrase帽a (trusted connection):

  "ConnectionStrings":
  {    
    "DefaultConnectionString":"Server=DESKTOP-6S87MT2\\SQLEXPRESS;Database=netCoreTest;Trusted_Connection=True;MultipleActiveResultSets=true"
  },

Para los que tienen problema con la tarjeta de cr茅dito la mejor soluci贸n es Nequi. All铆 pueden abrir una tarjeta virtual por muy poco dinero y les soluciona muchos problemas 馃槃

Puedo subir mi sitio web a Azure usando una base de datos local?

pues perd铆 mi tarjeta antes de venir aqu铆 so me salto la clase >:l
igual la tarjeta es s贸lo para validar identidad

Al ejecutar con la conexion de mi base de datos local SQLServer , se creo automaticamente la base de datos y tablas. 馃檳

Para las 煤ltimas versiones de ASP .NET Core es necesario agregar un par de l铆neas de c贸digo en el archivo Startup.cs para que la aplicaci贸n se conecte sin que presente este error:

Se produjo una excepci贸n de tipo 鈥楽ystem.InvalidOperationException鈥 en Microsoft.AspNetCore.Authorization.Policy.dll pero no se control贸 en el c贸digo del usuario: 鈥楿nable to find the required services. Please add all the required services by calling 鈥業ServiceCollection.AddAuthorization鈥 inside the call to 鈥楥onfigureServices(鈥)鈥 in the application startup code.鈥
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

public void ConfigureServices(IServiceCollection services)
{
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0); //Esta compatibilidad no viene seteada

string connString = ConfigurationExtensions.GetConnectionString(this.Configuration, "DefaultConnectionString");
            
services.AddDbContext<EscuelaContext>(
                    options => options.UseSqlServer(connString)
       );
}