En el núcleo .NET 3.1 mediante el programa de consola de la consola en la migración y el establecimiento de la entidad ef

Debido a que el programa de la consola es muy limpio, así que lea del archivo de configuración para completar la configuración de la base de datos requiere su propio

1, se lee en el fichero de configuración:

Notas: (1) la necesidad de establecer su propio archivo appsettings.json en el directorio del proyecto, u otros tipos de perfiles se pueden tratar con flexibilidad aquí;

(2) Después de establecer recuerde la opción de generar el archivo es si es más nuevo copian en el directorio de salida, fácil de modificar actualización.

///  <summary> 
/// 初始化应用程序配置文件
 ///  </ summary> 
///  <returns> </ devoluciones> 
pública  estática IConfigurationRoot InitConfiguration () 
{ 
    var basePath = Directory.GetCurrentDirectory ();
    var configBuilder = nuevo ConfigurationBuilder () 
        .SetBasePath (basePath) 
        .AddJsonFile ( " appsettings.json " , opcional: falso , reloadOnChange: verdadero ) 
        .AddEnvironmentVariables (); 
    var Configuración = configBuilder.Build ();

    Console.WriteLine ( " 配置文件: " ); 
    Console.WriteLine (Path.Combine (basePath, " appsettings.json " )); 

    volver configuración; 
}

Transferencia: https://www.cnblogs.com/xiaoyu369/p/9559237.html

2, la base de datos de configuración:

Nota: (1) puede estar configurado de acuerdo con diferentes requisitos de la aplicación utilizando la base de datos;

(2) debido a que la entidad que utiliza conjunto de datos options.MigrationAssembly inútil y el programa actual en una consola de montaje, montaje de la necesidad de especificar la ejecución de código migración.

///  <summary> 
/// 初始化数据库配置
 ///  </ resumen> 
///  <param name = ""> configuración 应用程序配置</ param> 
///  <returns> </ returns> 
pública  estáticas DbContextOptions <PsyDbContext> InitDatabase (configuración IConfigurationRoot) 
{ 
    var connectionString = configuration.GetConnectionString ( " PSYDB " );
    var optionsBuilder = nuevo DbContextOptionsBuilder <PsyDbContext> ();
    var tipo_bd = configuration.GetValue < int > ( ");
    Interruptor (tipo_bd) 
    { 
        caso  1 : 
            optionsBuilder.UseSqlServer (connectionString, opciones => options.MigrationsAssembly ( " EfCoreMigrationTest " ));
            romper ;
        caso  2 : 
            optionsBuilder.UseMySql (connectionString); 
            romper ;
        por defecto : 
            optionsBuilder.UseSqlite (connectionString); 
            romper ; 
    } 
    Var dbContextOptions = optionsBuilder.Options; 

    Console.WriteLine ($ " 数据库[tipo_bd: {tipo_bd}]:" ); 
    Console.WriteLine (); connectionString 

    retorno dbContextOptions; 
}

Transferencia: https://www.cnblogs.com/skyfreedom/archive/2019/07/10/11166399.html

3, la llamada de prueba:

clase Programa 
{ 
    ///  <summary> 
    /// objeto de configuración de la aplicación
     ///  </ resumen> 
    pública  estática IConfigurationRoot la configuración { GET ; Privada  SET ;} 

    ///  <summary> 
    /// base de datos de objeto de configuración
     ///  < /> Resumen 
    pública  estáticas DbContextOptions <> PsyDbContext DbContextOptions { GET ; privada  SET ;} 

    ///  <summary> 
    /// Obtener contexto entidad
     ///  </ resumen> 
    pública  estática PsyDbContext la DbContext =>nuevos nuevos PsyDbContext (DbContextOptions); 

    estática  la async la tarea que el principal ( Cadena [] args) 
    { 
        // inicializar 
        la configuración = InitConfiguration (); 
        DbContextOptions = InitDatabase (la configuración); 

        // uso específico del código 
        var UserList = la await DbContext.UserInfo.Take ( . 5 ) .ToArrayAsync (); 

        // salida 
        Console.WriteLine ( " datos de inspección: " ); 
        Console.WriteLine (JsonConvert.SerializeObject (UserList, Formatting.Indented)); 
        la Console.ReadKey ();  
    }
}

4, archivos de configuración (appsettings.json) Contenido:

{
   "ConnectionStrings" : {
     "PSYDB": "Data Source = .; Initial Catalog = PSYDB; User ID = sa; contraseña = 123456; Connect Timeout = 15" 
  }, 
  // 数据库类型: 0-sqlite, 1-sqlserver, 2: mysql 
  "DbType": 1 
}

5, el contexto entidad: la definición no está aquí, se refiere al paso 2 enlace al artículo, el artículo, o de otro tipo EF Core.

6, se configura mediante las clases de entidad API fluida:

Para las interfaces originales clase padre: IEntityTypeConfiguration <>

Siga usando la configuración original de la EF puede recordar en la configuración física en la reescritura métodos OnModelCreating:

protegida  override  void OnModelCreating (ModelBuilder modelBuilder) 
{ 
    base de .OnModelCreating (modelBuilder); 

    var typesToRegister = Assembly.GetExecutingAssembly () getTypes (). 
        .Where (t => t.GetInterface ( typeof (IEntityTypeConfiguration <>) FullName) =.! nulos ); 

    foreach ( var tipo en typesToRegister) 
    { 
        dinámica configurationInstance = Activator.CreateInstance (tipo); 
        modelBuilder.ApplyConfiguration (configurationInstance); 
    } 
}

Transferencia: https://www.cnblogs.com/Zhang-Xiang/p/7580899.html

7, categorías de plantas físicas:

Nota: Si es necesario generar código de migración, el código anterior no es suficiente, es necesario agregar una clase de fábrica entidad en tiempo de ejecución para facilitar la herramienta de diseño puede ejemplos de un tipo de dicha Entidad

///  <summary> 
/// física basada en plantas, herramienta para facilitar el contexto entidad diseño EF creación (migración se puede realizar en la consola paquete de inicialización: el complemento Migración InitialCreate)
 ///  </ resumen> 
pública  clase PsyDbContextFactory: IDesignTimeDbContextFactory < PsyDbContext> 
{ 
    público PsyDbContext CreateDbContext ( cadena [] args) 
    { 
        var Configuración = Program.InitConfiguration ();
         var opciones = Program.InitDatabase (Configuración);
         retorno  nueva nueva PsyDbContext (Opciones); 
    } 
}

Transferencia: https://stackoverflow.com/questions/56686093/unable-to-create-an-object-of-type-dbcontext

Referencia: https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/

https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/dbcontext-creation

8, de fin:

Esto completa la preparación del código puede estar en la consola paquete de Visual Studio, hacer: Agregar a la migración InitialCreate establecer emigrado;

Además, si usted no desea migrar el código, a continuación, asegúrese de usar la línea de comandos (Remove-migración) eliminado, no puede simplemente eliminar el archivo, de lo contrario el código de migración posteriores podrían no del todo bien.

Supongo que te gusta

Origin www.cnblogs.com/xwgli/p/12446575.html
Recomendado
Clasificación