मैं पिछले कुछ समय से प्रोजेक्ट पर काम कर रहा हूं और मैं बिना किसी समस्या के माइग्रेशन जोड़ने में सक्षम था, लेकिन एक या दो सप्ताह पहले मैंने अपने संदर्भ वर्ग से sql सर्वर से कनेक्ट करने के लिए
onconfiguring optionsbuilder.useSqlServer का उपयोग करने से संक्रमण किया। डेटाबेस से जुड़ने के लिए स्टार्टअप क्लास की सेवाओं का उपयोग करना
जब मैं ऐड-माइग्रेशन चलाने की कोशिश करता हूं तो मुझे यह त्रुटि मिलती है
'MojDbContext' प्रकार की वस्तु बनाने में असमर्थ। डिज़ाइन समय पर समर्थित विभिन्न पैटर्न के लिए

कार्यक्रम वर्ग

 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>();
            });
}


 public class Startup
{
    public IConfiguration Configuration { get; }
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

   

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<mojDbContext>(options=> options.UseSqlServer(Configuration.GetConnectionString("ererer")));
        services.AddControllersWithViews();

        services.AddMvc();
        services.AddDistributedMemoryCache();
        services.AddSession();
    }

    // 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();
        }
        else
        {
            app.UseExceptionHandler("/Home/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.UseSession();
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}


कोड को छोटा रखने के लिए हटाए गए dbset गुणों के साथ मेरा संदर्भ वर्ग

 public class mojDbContext : DbContext
{
    

   
    public mojDbContext(DbContextOptions<mojDbContext> options)
        : base(options)
    {
    }



}


https://i.stack.imgur.com/Rn7Op.png

0
sasko 25 अक्टूबर 2020, 02:46

2 जवाब

सबसे बढ़िया उत्तर

IDesignTimeDbContextFactory इंटरफ़ेस को लागू करके आप माइग्रेशन को अपना DbContext बनाने का तरीका बता सकते हैं: यदि इस इंटरफ़ेस को लागू करने वाला वर्ग या तो व्युत्पन्न DbContext के समान प्रोजेक्ट में या एप्लिकेशन के स्टार्टअप प्रोजेक्ट में पाया जाता है, तो टूल DbContext बनाने के अन्य तरीकों को बायपास करते हैं। और इसके बजाय डिज़ाइन-टाइम फ़ैक्टरी का उपयोग करें।

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dbcontext-creation

1
Chameera 25 अक्टूबर 2020, 06:32

आपको dbset टूर dbcontext जोड़ने की आवश्यकता है

     public class mojDbContext : DbContext
{
    

   
    public mojDbContext(DbContextOptions<mojDbContext> options)
        : base(options)
    {
    }

   public DbSet<YourTable> YourTable{ get; set; }

}
0
Chameera 25 अक्टूबर 2020, 05:10