iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
2
Modern Web

輕量高效.NET Core開源Blog引擎:Miniblog.Core系列 第 15

15.Miniblog.Core.W3C:支持SQLite

15.Miniblog.Core.W3C:支持SQLite

繼續回到主線任務完善Miniblog SQLlite功能,有新的突破再回去闖關Electron.NET。


今天改用appsettings.json的connectionstring是否有值判斷使用哪一種資料存取:
1.假如SQLiteConnString有值使用SQLiteBlogService
2.假如MSSQLConnString有值使用MSSqlBlogService
3.假如都沒有值使用XML

  "blog": {
    "SQLiteConnString": "DataSource=app.db",
    "MSSQLConnString": ""
  },
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    	//..略
        //決定使用XML或是SQL讀取資料
        var section = Configuration.GetSection("blog");
        if (section.GetValue<string>("SQLiteConnString").Trim() != "")
        {
            SQLiteHelper.connectionString = section.GetValue<string>("SQLiteConnString");
            services.AddSingleton<IBlogService, SQLiteBlogService>();/*SQLite*/
        }
        else if (section.GetValue<string>("MSSQLConnString").Trim() != "")
        {
            SQLiteHelper.connectionString = section.GetValue<string>("MSSQLConnString");
            services.AddSingleton<IBlogService, MSSqlBlogService>();/*SQL-Server*/
        }
        else
        {
            services.AddSingleton<IBlogService, FileBlogService>();/*XML*/
        }
        //..略
    }
}

而SQLite部分使用的是輕量級System.Data.SQLite.Core,不使用EF
2018-10-15.23.21.00-image.png

程式幾乎沒有改動改動,使用幾乎是MSSqlBlogService實作內容,除了改connection類型而已,當初特意不使用T-SQL是對的。
2018-10-15.23.25.37-image.png

補充SQLite SQL Script:

CREATE TABLE Post(ID nvarchar(50) NOT NULL
    ,Title nvarchar(250) NOT NULL
    ,Slug nvarchar(250) NOT NULL,Excerpt nvarchar(250) NOT NULL
    ,Content nvarchar(10000) NOT NULL,PubDate datetime NULL
    ,LastModified datetime NULL,IsPublished bit NULL
    ,IsMarkDown bit NULL,MarkDownContent nvarchar(10000) NULL);
CREATE TABLE Categories( PostID nvarchar(50) NOT NULL, Name nvarchar(250) NOT NULL);
CREATE TABLE Comment(  ID nvarchar(50) NOT NULL,  Author nvarchar(50) NOT NULL
    ,  Email nvarchar(50) NOT NULL,  Content nvarchar(250) NOT NULL,  PubDate datetime NOT NULL
    ,  IsAdmin bit NOT NULL,  PostID nvarchar(50) NOT NULL);

上一篇
14.Electron.Net跟Miniblog:註冊按鍵`Ctrl+S`,方便文章更新
下一篇
16.Miniblog.Core:簡單權限驗證
系列文
輕量高效.NET Core開源Blog引擎:Miniblog.Core30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言