1. 程式人生 > >我的Docke-CE學習筆記(03)

我的Docke-CE學習筆記(03)

inf exception addm entity 註入 provider ase mod ise

新建一個Asp.net Core 2.0 WebAPI項目。

技術分享圖片

添加EntityFrameworkCore引用

技術分享圖片

建立Data,Models文件夾

技術分享圖片

Models內建立User.cs

namespace User.API.Models
{
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Company { get; set; }
        public string Title { get
; set; } } }

Data內建立UserContext.cs,繼承自DBContext

namespace User.API.Data
{
    public class UserContext : DbContext
    {
        // 傳一個構造函數
        // base調用構造函數
        public UserContext(DbContextOptions<UserContext> options) : base(options)
        {

        }

        protected override
void OnModelCreating(ModelBuilder modelBuilder) { // 重寫方法,AppUser生成Users modelBuilder.Entity<AppUser>() .ToTable("Users") .HasKey(u => u.Id); base.OnModelCreating(modelBuilder); } public DbSet<AppUser> Users { get
; set; } } }

appsettings.json添加連接字符串

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  },
  "ConnectionStrings": {
    "MySqlUser": "server=127.0.0.1;port=3006;database=fieer_mysql;userid=fieer;password=password "
  }
}

Startup.cs內添加服務,生成默認數據

namespace User.API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            // 添加
            services.AddDbContext<UserContext>(options =>
            {
                options.UseMySQL(Configuration.GetConnectionString("MySqlUser"));
            });
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
            InitUserDatabase(app);
        }

        // 添加默認用戶
        public void InitUserDatabase(IApplicationBuilder applicationBuilder)
        {
            // 依賴註入
            using (var scope = applicationBuilder.ApplicationServices.CreateScope())
            {
                var userContext = scope.ServiceProvider.GetRequiredService<UserContext>();
                if (!userContext.Users.Any())
                {
                    userContext.Users.Add(new Models.AppUser { Name = "fieer" });
                    userContext.SaveChanges();
                }
            }

        }
    }
}

我的Docke-CE學習筆記(03)