繁体   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