ब्लॉग पोस्ट के लिए एंटिटी फ्रेमवर्क जोड़ना (Pt (हिन्दी (Hindi))

ब्लॉग पोस्ट के लिए एंटिटी फ्रेमवर्क जोड़ना (Pt

Tuesday, 20 August 2024

//

3 minute read

परिचय

अब इस ब्लॉग को Entity Framework का उपयोग कर चल रहा है मैं नए पोस्ट और भाषाएँ आसानी से जोड़ सकता हूँ

इस पोस्ट में मैं इस प्रक्रिया के लिए कुछ छोटे जोड़े जो मैंने किया है और कैसे यह भविष्य में सुधारों को सक्षम करता है

भाग देखें 1, 2, 3 , 4 और 5 पिछले चरणों के लिए

पृष्ठभूमि अद्यतन

ईएफ में जाने के साथ मेरे सामने एक समस्या यह थी कि मैं साइट अद्यतन करने की प्रक्रिया को बनाए रखता रहा और साइट अद्यतनी को लंबित नहीं करता।

पिछले भागों में मैंने दिखाया है कि कैसे मैं एक का उपयोग किया MarkdownBlogService ब्लॉग पोस्ट और भाषाओं को प्राप्त करने के लिए. यह सेवा हमारे नियंत्रकों और दृश्यों में इंजेक्शन किया गया था। BlogViewModels.

अद्यतन प्रक्रिया निम्नलिखित है

   flowchart LR
    A[Write New Markdown File] -->|Checkin To Github| B(Github Action Triggers)
    B --> C(Builds Docker Image)
    C --> D(Watchtower Pulls new Image)
    D --> E{New Files Added?}
    E -->|Yes| F(Add File to Database)
    E -->|No| G(Skip Database Seeding)
    F --> H(Site Updated)
    G --> H(Site Updated)

पृष्ठभूमि अद्यतन जब साइट ASP में आरंभ होता है अनुमति देने के लिए मैं एक का उपयोग करता हूँ IHostedService नए फ़ाइलों की जाँच करने और डाटाबेस में उन्हें जोड़ने के लिए

यह बहुत सरल है और यह सब नीचे करता है

public class BackgroundEFBlogUpdater(IServiceScopeFactory scopeFactory, ILogger<BackgroundEFBlogUpdater> logger) : IHostedService
{
    private Task _backgroundTask;
    public async Task StartAsync(CancellationToken cancellationToken)
    {
       
        var scope = scopeFactory.CreateScope();
        var context = scope.ServiceProvider.GetRequiredService<IBlogPopulator>();
        logger.LogInformation("Starting EF Blog Updater");
      
        _backgroundTask = Task.Run(async () =>    await  context.Populate(), cancellationToken);
       logger.LogInformation("EF Blog Updater Finished");
    }

    public async Task StopAsync(CancellationToken cancellationToken)
    {
        
    }
}

ध्यान दें कि एक महत्वपूर्ण पहलू यहाँ है कि एफ इस बारे में बहुत चुनेदार है IServiceScopeFactory सेवा के लिए एक नए क्षेत्र का सृजन करने के लिए के उपयोग IServiceScopeFactory ASP में एक आम पैटर्न है जब आपको एकलटोन सेवा में एक स्कोप सेवा का उपयोग करने की आवश्यकता होती है

मैं भी उपयोग करना था Task.Run एक नई थ्रेड में कार्य चलाने के लिए IHostedService मुख्य थ्रेड पर चलाता है और मैं नहीं था

यह है BackgroundEFBlogUpdater वर्ग. यह' का प्रयोग करके इंजेक्शन किया गया है SetupBlog विस्तार विधि जो मैंने पहले दिखाया था

    public static void SetupBlog(this IServiceCollection services, IConfiguration configuration, IWebHostEnvironment env)
    {
        var config = services.ConfigurePOCO<BlogConfig>(configuration.GetSection(BlogConfig.Section));
       services.ConfigurePOCO<MarkdownConfig>(configuration.GetSection(MarkdownConfig.Section));
       services.AddScoped<CommentService>();
        switch (config.Mode)
        {
            case BlogMode.File:
                Log.Information("Using file based blog");
                services.AddScoped<IBlogService, MarkdownBlogService>();
                services.AddScoped<IBlogPopulator, MarkdownBlogPopulator>();
                break;
            case BlogMode.Database:
                Log.Information("Using Database based blog");
                services.AddDbContext<MostlylucidDbContext>(options =>
                {
                    if (env.IsDevelopment())
                    {
                        options.EnableSensitiveDataLogging(true);
                    }
                    options.UseNpgsql(configuration.GetConnectionString("DefaultConnection"));
                });
                services.AddScoped<IBlogService, EFBlogService>();
            
                services.AddScoped<IBlogPopulator, EFBlogPopulator>();
                services.AddHostedService<BackgroundEFBlogUpdater>();
                break;
        }
        services.AddScoped<IMarkdownBlogService, MarkdownBlogPopulator>();

        services.AddScoped<MarkdownRenderingService>();
    }

विशेष रूप से यह लाइन services.AddHostedService<BackgroundEFBlogUpdater>(); ASP में यह एक नया होस्टेड सर्विस आरंभ करता है जो पृष्ठभूमि में चलता है

यह आपके ASP में पृष्ठभूमि प्रक्रमण को जोड़ने का एक सरल तरीका है

अंत में

इस पोस्ट में मैंने दिखाया कि कैसे मैने अपने ASP को एक पृष्ठभूमि सेवा जोड़ी है।

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.