簡體   English   中英

c#: 沒有注冊 *Context 類型的服務。 數據庫連接問題

[英]c#: No service for type *Context has been registered. Database connection issue

我是 C# 新手,嘗試使用 ASP.NET 核心將數據庫連接添加到 MVC 項目:

模型:

  • 實體類用戶

     public class User { public string Name { get; set;} public string LastName { get; set; } }
  • 語境:

     using Microsoft.EntityFrameworkCore; namespace Forum.Models { public sealed class ForumContext : DbContext { public DbSet<User> Users { get; set;} public ForumContext(DbContextOptions<ForumContext> options) : base(options) { Database.EnsureCreated(); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql("server=localhost;UserId=root;Password=password;database=forum1;"); } } }
  • 類 - 初始化程序:

     public static class SampleData { public static void Initialize(ForumContext context) { if (!context.Users.Any()) { context.Users.AddRange( new User() { LastName = "last name", Name = "Name" } ); } } }

配置和執行:

  • appsettings.json:

     { "ConnectionStrings": { "DefaultConnection": "server=localhost;port=3306;user=root;password=password;database=forum1" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }
  • Sturtup.cs類中,我只修改了 MySqlConnection 注入的ConfigureService方法:

     public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.AddTransient<MySqlConnection>(_ => new MySqlConnection(Configuration["ConnectionStrings:Default"])); }
  • 和類Program.cs:

     public class Program { public static void Main(string[] args) { var host = CreateHostBuilder(args).Build(); using (var scope = host.Services.CreateScope()) { IServiceProvider provider = scope.ServiceProvider; try { //-------------------ERROR---------------------------- var context = provider.GetRequiredService<ForumContext>();//there is the exception was throwed SampleData.Initialize(context); } catch (Exception ex) { var logger = provider.GetRequiredService<ILogger<Program>>(); logger.LogError(ex, "An error occurred seeding the DB."); } } host.Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
  • 安裝的軟件包:

在此處輸入圖片說明

結果我有以下錯誤:

在此處輸入圖片說明


您必須在Startup.cs ConfigureServices中執行以下ConfigureServices

services.AddDbContext<{yourDBContext_Name}>(options =>
{
      options.UseMySql({Your Connection String});
      // If it is for Sql Server use options.UseSqlServer({Your Connection String});
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM