فراخوانی متد سید دیتا در .net6

محمد قلی زاده
26 بهمن ۱۴۰۰

ببخشید من سید دیتا پروژه رو در متد Configure فراخوانی میکردم،حالا که پروژه net6. اپدیت کردم،الان اگه بخوام دوباره سید دیتا رو همینجا اعمال کنم به چه نحوی باید انجام بشه؟

765

5 پاسخ
  • محمد اشرافی26 بهمن ۱۴۰۰

    دقیقا همینجا فراخوانیش کن و اگر به سرویس خاضی احتیاج دارید باید از Service Collection دریافت اش کنید

    به این شکل : 

    async Task SeedData(IServiceProvider services){
    	using var scope = services.CreateScope();
    	var serviceProvider = scope.ServiceProvider;
    	var dapperContext = serviceProvider.GetRequiredService<DapperContext>();
    	...
    }

    و بعد این متد توی همون program.cs صدا بزنید و builder.services رو بهش بدین

  • محمد قلی زاده26 بهمن ۱۴۰۰

    استاد ببخشید ولی به عنوان unuses methodمیشناسه و سید دیتا رو درج نمیکنه

  • محمد اشرافی27 بهمن ۱۴۰۰

    خوب متد رو  بعد از اینکه app رو ساختید صداش بزنید

    var app = builder.Build();
    await SeedData(app.Services);
  • محمد قلی زاده27 بهمن ۱۴۰۰

    استاد عکس تابع رو فرستادم،چجوری دوباره صداش بزنم؟
    اینطوری نوشته نشده  یک تابع استاتیک هستش که پارامتر هاش رو باید از یک تابع دیگه بگیره

  • محمد اشرافی27 بهمن ۱۴۰۰

    خوب ببینید من که بهتون گفتم توی متد SeedData که توی Program.cs میسازی ، یکی یکی سرویس هارو بگیر و بهش پاس بده : 

    var app = builder.Build();
    await SeedData(app.Services);
    
    
    async Task SeedData(IServiceProvider services){
    	using var scope = services.CreateScope();
    	var serviceProvider = scope.ServiceProvider;
    	var context= serviceProvider.GetRequiredService<DapperContext>();
    	var roleManager= serviceProvider.GetRequiredService<IApplicationRoleManager>();
    	var userManager= serviceProvider.GetRequiredService<IApplicationUserManager>();
    	
    	await DummyData.Initialze(context,userManager,roleManager);
    }

    {