中央競馬の予想や購入したもののメモなどを書いて行こうかと。まあ、個人的なメモ的なブログです。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Visual Studio 2022 CommuntiyにもSQLite/SQL Server Compact Toolboxを入れてみたけど、VS2022C自体が飛びますw この拡張機能ってどこが出してるのか知らなかったけど、MSじゃないの?w なんだか滅茶苦茶不安になるなぁ。
まあね、もともとMS信者ではないですが、40年程前にMacroAssemberとかなんとかだったと思うMS製品購入してた経験はありますが、ビル君は明らかにお金持ちになるだけで、成長はしてないのは十分に分かったので、ここは新製品には飛びつかず、安定を選択するべきなのかもorz ビル君のBASICの酷さは健在って事かな~。
大々的にラウンチとかしてプレビューのままなVS2022って世間ではどんな感じで受け取られているんだろ?w
マイクロソフトがVisual Studio 2022ラウンチとか大げさにやってるのをリアルタイムで視聴してたりしましたが、なんだろ? あれは、ある意味、まあ、アメリカンな感じでああなのかな~っとw で、あのイベントから数週間経つが未だpreviewのままで、しかもupdateまで昨日来てた気がするorz ラウンチしたなら正式版じゃないのかね~っと。
まあ、前置きはそんな所で、このVisual Studio 2022 Community Editionでの開発への移行をしてる訳ですが、今後は.NET 6だよって事でこれでプロジェクト作ってSystem.Data.SQLite.EF6.Migrationsを入れて、いざコードファーストってすると
プロジェクトのターゲットフレームワークにEntity Framework ランタイムアセンブリが含まれていません。プロジェクトのプロパティ ページでターゲット フレームワーク情報を確認してください。
となる。そんな訳で、.NET 6プロジェクトでは現時点System.Data.SQLite.EF6.Migrationsは対応出来ていない模様です。ってな訳で、取り合えず、プロジェクトは後ろに(.NET Framework)がついてる奴でSystem.Data.SQLite.EF6.Migrationsを入れて続行します。
Visual StudioのIDE内エディタはインテリセンス諸々のおかげで重宝してます。このおかげで随分と無知な状態でのコーディングも助けられてます。ただ、まあ、一昔前よりは進化して、ひとつのソースファイルを上下2分割して表示とかは出来たりしますが、2つのソースを眺めながらのコーディングとかが出来なかったりと、もどかしさが多々ある為、数か月前にVS Code入れたりして、これで2つのソース眺めながらはクリアしてました。ただ、ここに来てラッピングされたentity framework的なSQLiteアクセスでは速度的に問題で、ゴリゴリとSQLコマンド的な解決が必要になり、そのコーディングにはキーボードマクロが欲しいな~っと。
現役でコーディングしてた頃には、MS-DOSの時代からMIFESのお世話になっており、キーボードマクロは随分と重宝しました。その感覚から、あ~っ、こんなのキーボードマクロ使えばあっさり出来るのにって思う事多々あり、最近はインストールしなくなった古いバージョンのMIFES for Windowsを入れようかなとかも考えたけど、あまりにも古いバージョンだから、かといって最新バージョン購入とかは全く考えたくない訳でね。
検索すると、そんな感じのツールもまあ無くはないがどうなんだろって気がして^^; で、目に入ったのはサクラエディタ。存在自体は知ってたけど、入れ様と思える事がここまでなかったんですが、昨日(日付が変わっちゃったので)出勤直前にインストールして、起動まではしてました。で、早速キーボードマクロを使ってみると、まあ、だいたいMIFESと同じ様に使える感じ。他にもMIFES的な編集機能も実装されてる感じなので今後はお世話になる事になるかな。
ただ、残念な事は、かなりの編集をしてキーボードマクロでスムーズに出来たので、この記事書いていて、ふとサクラエディタに戻ろうとすると「応答がない」orz 基本ですね、一段落してるならセーブはしましょう!
SQL Server Expressでのコードファーストからのデータ登録では滅茶苦茶遅いSQLiteでした。調べると直ぐに分かるのはトランザクションを明示的に使う事での時短。
Using db ...
db.xxx.Add()
db.SaveChanges()
End Using
って感じを全体的にひっくるめて
Dim sqlBuilder As New SQLite.SQLiteConnectionStringBuilder()
'Set the properties for the data source.
sqlBuilder.DataSource = My.Settings.KSD_Data_Source
sqlBuilder.JournalMode = SQLite.SQLiteJournalModeEnum.Persist
sqlBuilder.SyncMode = SQLite.SynchronizationModes.Off
Using con As New SQLite.SQLiteConnection(sqlBuilder.ToString())
con.Open()
Using tran As SQLite.SQLiteTransaction = con.BeginTransaction()
Try
Using db As New KSD_DB
End Using
tran.Commit()
Catch ex As Exception
tran.Rollback()
End Try
End Using
End Using
に変更する必要があるっぽい。
2020.11.11 追記
上記の再内側で使っている
Using db as New KSD_DB
End Using
の部分はダメでした。多分このメソッド使うと既に自動でトランザクションとか諸々考慮されたものなのかもしれません。で、代わりにSQLiteCommandを使う方法でなければならない感じです。これってテーブルにカラムが多いと滅茶苦茶大変かと。今回テスト的に書いてみたコードは比較的カラム数が少ないテーブルでしたので昨晩チャチャっと書いておき、サーバメンテなんかの影響で今晩帰宅後に試しました。苦労した甲斐はありました。約4万件登録するのに2時間も掛かっていた処理が1分掛からずの45秒程度で完了とか^^ 嬉しかった。
が、その後Visual Studioがこのブログ書いている間に2回もハングしてるorz いや、別に単にソースを見ているだけの状態でハングとか、今迄経験なかったが、なんだろ? OS再起動して様子みるしかなさそうかも。
数日前にPostgreSQLにまで手を出しPCにインストールしてゴリゴリと。こちらも決してスムーズではなく、結局データベース作成とかユーザー管理とか、本来の開発以前の段階での苦労が多いし、そもそもこんなアプリじゃ導入するのも一苦労しそうだなぁって事で見送る事にした。後日PostgreSQLはアンイスントールします。
で、再三にわたるSQLiteでのトライ(笑) あちこちの導入記事を参考に試しても、記事と全く同じ事をやっても記事通りの結果にならず、それこそVisual Studioのアンインストールからの再インストールをとかもうかなり苦労はしました。
結果から先に書きますが、壁抜けた^^
ここまでパッケージマネージャーコンソールでEnable-Migrationsしても期待通りの動作が得られず何が悪いか、諸々のバージョン違いとか。まあ、一つはそもそものSQLiteのインストールが必要とか、これ全く気にしてなかった。イメージとしてライブラリをアプリに組み込めば機能すると勝手に判断してました。DLLをプロジェクトに追加とかなんかそんなイメージでいたんです。
で、本来期待する動作ではMigrationsフォルダが作られてConfiguration.vbが作られるのでそれを編集するって所が、フォルダもクラスも追加されなかったので、まあ、作られなきゃ自分で作るかって当たり前の作業してみました。ここでC#でのイメージばかりで、自分はVBなのでその違いで苦労して
こんな感じで書きました。
これが出来れば、この後のAdd-Migration InitialMigrationとUpdate-Databaseはなんなく実行されて無事にアプリのSQL Server Express→SQLite化は終了かな。明日からはまたdebuggingに戻れるぞorz
ああ、追記として、やはりSQLiteで日本語は問題にはならないと思うけど、明日からの作業で分かるかと。