3 votes

Existe-t-il un moyen d'ajouter des données échantillons avec la classe dans la mise à jour de la base de données au moment de la migration BLAZOR ?

J'espère que vous allez bien. J'ai une table dans BLAZOR appelée Personnes. Nous voulons insérer une série d'enregistrements dans cette table lorsque nous créons des objets de base de données avec la commande Update-Database dans la section Migration. Bien sûr, il s'agit de vérifier lors de l'Update-database que si cette table est sans enregistrement, ces enregistrements nécessaires seront enregistrés dans la table. La structure de la table dans la classe est définie comme suit :

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace BlazorMovies.Shared.Entities
{
    public class Person
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string Biography { get; set; }

        public string Picture { get; set; }

        [Required]
        public DateTime? BirthDay { get; set; }

        [NotMapped]
        public string Character { get; set; }
    }
}

La chaîne de connexion dans appsettings.json est le suivant :

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=MtServ; Initial Catalog=BlazorMvDB;Integrated Security=true;MultipleActiveResultSets=true"
  }
}

StartUp.cs :

using BlazorMovies.Server.DbContext;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace BlazorMovies.Server
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))
            //options.UseSqlServer(Configuration["ConnectionStrings:DefaultConnection"])
            );
            services.AddControllersWithViews();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseWebAssemblyDebugging();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseBlazorFrameworkFiles();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapFallbackToFile("index.html");
            });
        }
    }
}

Programme.cs :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace BlazorMovies.Server
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

Merci de votre attention.

2voto

Famile Door Points 66

Cette méthode résoudra très probablement votre problème. Veuillez utiliser ce code et nous faire savoir si vous rencontrez des problèmes.

protected override void OnModelCreating(ModelBuilder mBuilder)
        {
            mBuilder.Entity<Person>().HasData(
                new Person { Name = "Mick Leon", Character = "Big Boy", Biography = "He was born in . . ." , BirthDay = System.DateTime.Parse("1972/02/01")   }
                , new Person { Name = "Saliban Zitsev", Character = "Chair Man", Biography = "He was died in . . .", BirthDay = System.DateTime.Parse("1969/11/23") }
                );
            base.OnModelCreating(mBuilder);
        }

Si vous rencontrez une erreur d'identité, utilisez le code suivant :

protected override void OnModelCreating(ModelBuilder mBuilder)
        {
            mBuilder.Entity<Person>().HasData(
                new Person { Id=1, Name = "Mick Leon", Character = "Big Boy", Biography = "He was born in . . ." , BirthDay = System.DateTime.Parse("1972/02/01")   }
                , new Person {Id=2, Name = "Saliban Zitsev", Character = "Chair Man", Biography = "He was died in . . .", BirthDay = System.DateTime.Parse("1969/11/23") }
                );
            base.OnModelCreating(mBuilder);
        }

Bien entendu, veillez à ce que votre base de données ne contienne pas déjà des données similaires aux identifiants soumis. .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X