1. 程式人生 > >asp.net core建立web api 並且連線sqlite 使用程式碼直接建立資料庫 code first

asp.net core建立web api 並且連線sqlite 使用程式碼直接建立資料庫 code first

環境visual studio 2017免費版,.net core 2.2

1.建立asp.net core web api 專案

.net core 選擇當前最新版本,專案選擇API型別,不進行身份驗證,點選確定。

此時一個web api專案就建立好了。

直接執行,先看效果。

博主在其他電腦上都可以正常執行,但是就在寫blog的這臺電腦上報錯了,提示

在Program.cs檔案中找不到webhost

解決的辦法就是重新安裝一下.net core 2.2,點選repair

重啟電腦後,終於可以運行了 瀏覽器中顯示


2.建立sqlite資料庫

1.在NuGet中安裝

2.建立一個數據庫模型的類

新建一個Models的資料夾,在這個資料夾下建立一個Model.cs的類

3.修改這個類

Model.cs

using Microsoft.EntityFrameworkCore; //DbContext
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace WebApplication3.Models
{
    public class Model:DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
                optionsBuilder.UseSqlite("Data source=d:/mydb.db");    //建立資料夾的位置        
        }

        public DbSet<Database> Databases { get; set; }
    }

    public class Database
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

4.修改Startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            using (var database = new Model())    //新增
            {
                database.Database.EnsureCreated(); //如果沒有建立資料庫會自動建立,最為關鍵的一句程式碼
            }
        }

只要在ConfigureServices方法中新增4行程式碼就可以了,記得要新增一名Model的名稱空間哦

5.再次執行

網頁上的效果還是一樣

但是d盤下面自動建立了mydb.db

 

Databases的結構和我們建立的Database類一樣。


3.操作資料庫

修改Controllers資料夾下面的ValuesControllers.cs

 // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            var database = new Model();
            database.Databases.Add(new Database { Name = "張三" });
            database.SaveChanges();
            return new string[] { "value1", "value2" };
        }

 

只修改[httpget]下面。

新增三行程式碼,在執行。

在瀏覽器中出現   ["value1","value2"]後檢視資料庫

已成功新增。

說明已經可以操作資料庫了。

至於資料詳細的增刪改查會在以後的博文中寫。