ASP.NET Coreでマイグレーションファイルをマイグレーション専用プロジェクトに配置する。

CodeFirstでプログラムを作っている場合、dotnet コマンドの migrations サブコマンドでマイグレーションスクリプトをプロジェクトに追加しますが、マイグレーションプロジェクトを別のプロジェクトで管理したい場合の方法
https://github.com/bricelam/Sample-SplitMigrations

広告
カテゴリー:ASP.NET, DB, 未分類

Riderでマルチスタートアップ

Visual Studioで複数プロジェクトをいっぺんに実行したりデバックしたりする場合、ソリューションのスタートアッププロジェクト設定でマルチスタートアップから実行するプロジェクトを選択します。

Riderでは複合実行という設定で同じように複数プロジェクトを実行することができます。
マニュアルでは、複合ってなっているんだけれど、IDEではCompoundって名前ですね。
https://pleiades.io/help/rider/Creating_Compound_Run_Debug_Configuration.html

カテゴリー:ASP.NET, Visual Basic

asp.net core で別プロジェクトにあるDbContextを元にマイグレーションするときの資料

カテゴリー:未分類

今日の発見

おぉ、outってこうかけるようになったんだ。

if (!int.TryParse(value, out var i))
return null;
return i;

カテゴリー:メモ, 雑記

MacでDockerサポートな.net coreをデバックする場合は、/usr/local/share/dotnet/sdk/NuGetFallbackFolderをFileShareに設定する。

Visual Studio 2017で作った、DockerサポートありのASP.NET Coreプロジェクトを、Visual Studio for Macででバックしようとしたら、こんなエラーで怒られた。

/Applications/Visual Studio.app/Contents/Resources/lib/monodevelop/AddIns/docker/MonoDevelop.Docker/MSbuild/Sdks/Microsoft.Docker.Sdk/build/Microsoft.VisualStudio.Docker.Compose.targets(363,5):
error :
ERROR: for dockercompose10154073938731495326_todo_1
Cannot start service todo: b’Mounts denied:
The path /usr/local/share/dotnet/sdk/NuGetFallbackFolder
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker ->
Preferences… ->
File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

言われた通り、Dockerの設定から、下記のフォルダーをFile Shareに追加したらうまく動いた

/usr/local/share/dotnet/sdk/NuGetFallbackFolder

Riderだとこんなエラーが出て実行できない。
これはWindowsでも同じだから、Rider側の対応が必要そう

Project ‘docker-compose’ load failed: The SDK ‘Microsoft.Docker.Sdk’ specified could not be found.

サポートを見ると現在作業中?

https://rider-support.jetbrains.com/hc/en-us/community/posts/115000634804-Visual-Studio-Tools-for-Docker-Support-needed

リンクにある通り、単にビルドするだけならRiderの拡張機能を使ったり自前でビルドすれば良いんだけれど、デバックまで考えるとVSMacと同等の機能があると嬉しい。

カテゴリー:ASP.NET, DB, Docker, 未分類

Docker for Windows のエッジ版にもKubernetes入った?

お家の環境のDockerが更新されたんだけれど、設定画面にKubernetesの文字が、ちゃんと勉強しなきゃ。。。
キャプチャ.PNG

いや、それ以前にネットワークの調子が悪くてアップデート後にDockerが上がらない、、、Reset to factory defaultsで初期化してあげたらこんな画面が
キャプチャ2.PNG
ログにはこんなのが出てた。

[23:32:49.292][NamedPipeClient][Error ] Unable to send Start: Unable to create File System Image
[23:32:49.292][Notifications ][Error ] Unable to create File System Image
[23:32:49.291][NamedPipeServer][Error ] Unable to execute Start: Unable to create File System Image 場所 Docker.Backend.ContainerEngine.Linux.DoStart(Settings settings, String daemonOptions) 場所 C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Linux.cs:行 244
場所 Docker.Backend.ContainerEngine.Linux.Start(Settings settings, String daemonOptions) 場所 C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Linux.cs:行 109

ちょい下にはこんな警告も

[23:32:49.326][CrashReport ][Warning] Unable to collect features settings: ファイル ‘C:\Users\karua\AppData\Roaming\Docker\features-overrides.json’ が見つかりませんでした。
[23:32:49.320][VpnKit ][Warning] Unable to download logs: 操作がタイムアウトしました。

カテゴリー:インフラ, Docker

StackExchangeでクラスター構成のRedisにTransactionで値を登録する場合はHashTagを使う

こんなコードをクラスター化されたRedisに対して実行すると

こんな例外が発生します。

StackExchange.Redis.RedisCommandException: Multi-key operations must involve a single slot; keys can use ‘hash tags’ to help this, i.e. ‘{/users/12345}/account’ and ‘{/users/12345}/contacts’ will always be in the same slot
場所 StackExchange.Redis.ServerSelectionStrategy.Select(Message message)
場所 StackExchange.Redis.ConnectionMultiplexer.TryPushMessageToBridge[T](Message message, ResultProcessor`1 processor, ResultBox`1 resultBox, ServerEndPoint& server)
場所 StackExchange.Redis.ConnectionMultiplexer.ExecuteAsyncImpl[T](Message message, ResultProcessor`1 processor, Object state, ServerEndPoint server)
場所 StackExchange.Redis.RedisTransaction.ExecuteAsync(CommandFlags flags)
場所 WindowsFormsApplication2.Form1.d__1.MoveNext() 場所 c:\users\sugiyama\documents\visual studio 2015\Projects\WindowsFormsApplication2\WindowsFormsApplication2\Form1.cs:行 36

エラーメッセージにある通り、Multi-keyに対する更新は対象となるデータがすべて同じスロットにある必要があるので、ハッシュタグでくくりましょうねとの事。

ハッシュタグでくくるとなんで同一のスロットに保存されるかはこのドキュメントが詳しい
Premium Azure Redis Cache の Redis クラスタリングの構成方法
https://docs.microsoft.com/ja-jp/azure/redis-cache/cache-how-to-premium-clustering#how-are-keys-distributed-in-a-cluster

という事で、こんなキー構成にするか、トランザクションを諦めるしかないようです。

カテゴリー:ASP.NET タグ: