![](/img/trans.png)
[英]“InvalidOperationException: No service for type 'Microsoft.Extensions.Configuration.IConfiguration' has been registered.”
[英]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.