首頁 三十天.NET❤️Azure漸進式開發專案 輕量高效.NET Core開源Blog引擎:Miniblog.Core
首頁 三十天.NET❤️Azure漸進式開發專案 輕量高效.NET Core開源Blog引擎:Miniblog.Core
×

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10201730

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);

留言


Comments are closed