行先ボードでも作ってみるか⑮ – 開発 Server側(SQLiteへのアクセス)

行先ボード開発が脱線を続けています。

マークダウンで設計書が書きたい
というところから始まったmenDocですが
行先ボードのプログラミングも面倒くさくなってきました。

プログラミングするプログラムでも作ろうかというのが今回の趣旨です。
もちろんプログラミングするプログラムにはプログラミングが必要です。

何を言ってるのかわからない?
えぇ、僕もわかりません。

テーマ

menDocにテーブル定義を書いたら、
SQLite用のEntityFramewokを使用したC#のコードが
自動で作成されるようにしていきます。

イメージはこんな感じ。

出来上がったソースコードをぺたぺた.csファイルに貼り付けていきます。
この辺の手順はダサいのですがとりあえずは良しとします。
今後に期待。

実際に作っていきます

以下のものを使用しています。

説明 内容
開発環境 Microsoft Visual Studio Community 2019
開発言語 C# コンソールアプリケーション
フレームワーク .NET 5.0
開発補助ツール① Visual Studio Code
開発補助ツール② VSCode拡張機能:Markdown Preview Enhanced
開発補助ツール③ VSCode拡張機能:Markdown Preview Mermaid Support
開発補助ツール④ A5M2:データベース操作用
開発補助ツール⑤ menDoc ※2021/4現在 プロトタイプ版

※menDocは現在作成中の適当アプリです。
menDocは動作保証はできませんが、GitHubにおいてます。
予告なく仕様を変更しまくります。

Nugetで必要なものをダウンロード

  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Tools

テーブル定義

menDocを使って書いていきます。
こんな感じ。

ER図

menDocで自動生成されたMarkdownをVSCodeに貼り付けるとこんな感じです。

VSCode拡張機能には以下のものを使用しています。

  • Markdown Preview Enhanced
  • Markdown Preview Mermaid Support

テーブルと同じ構造のクラスを作っていきます

menDocで自動生成

DbContextの派生クラスをつくります

menDocで自動生成

マイグレーションします。

SQLiteDataContextクラスのファイルパスを変更します。

public class SQLiteDataContext : DbContext
{
    // (省略)

    // 最初にココを変更する
    string db_file_path = @"C:\Work\develop\DestinationBoard.db";
}
  • パッケージマネージャコンソールで以下のコマンドを順に実行
Enable-Migrations
Add-Migration SampleSystem
Update-Database

確認

SQLiteのファイルができていることを確認する

イイ感じ

テーブルができていることを確認

イイ感じ

後は如何様にでも

    class Program
    {
        static void Main(string[] args)
        {
            ActionMasterBase.Delete(new ActionMasterBase()
            {
                ActionID = "11111",
                ActionName = "テスト名",
                CreateDate = DateTime.Now,
                CreateUser = Environment.UserName,
                UpdateDate = DateTime.Now,
                UpdateUser = Environment.UserName
            });

            ActionMasterBase.Insert(new ActionMasterBase()
            {
                ActionID = "11111",
                ActionName = "テスト名",
                CreateDate = DateTime.Now,
                CreateUser = Environment.UserName,
                UpdateDate = DateTime.Now,
                UpdateUser = Environment.UserName
            });

            ActionMasterBase.Update(new ActionMasterBase()
            {
                ActionID = "11111",
                ActionName = "テスト名",
                CreateDate = DateTime.Now,
                CreateUser = Environment.UserName,
                UpdateDate = DateTime.Now,
                UpdateUser = Environment.UserName
            },
            new ActionMasterBase()
            {
                ActionID = "11111",
                ActionName = "テスト2",
                CreateDate = DateTime.Now,
                CreateUser = Environment.UserName,
                UpdateDate = DateTime.Now,
                UpdateUser = Environment.UserName
            }
            );
        }
    }

まとめ

ソースコードを自動生成するためのプログラムを書くということで
普通に書くよりたくさんコードを書いてます。
最近寄り道ばっかです。まぁ、楽しいからいいや。

おわり

コメントする

メールアドレスが公開されることはありません。