コーヒー飲みながら仕事したい

昆布茶きのこの人々、一日中座っている。

Windows10が勝手に自動更新してウザイとき

Windows10で自動更新がかかるのを制御する方法。作業中にいきなりCPU100%とかなって邪魔されるので、自動更新を切ります。

Windows10 Pro であることが前提です。あと、更新が一切かからなくなるので、手動更新は自己責任です。

Windows Update を無効にする方法

こちらに答えがあります。
一点、Windows Update が再び勝手に開始されることを防ぐためにローカルグループポリシーをいじる必要があるのですが、gpedit.msc を実行すると、ローカルグループポリシーエディターが起動します。

dotnet ef migrations add したら Unable to create an object of type 'ApplicationDbContext' と怒られるとき

ことの成り行き

もともと dotnet core 1.1 のプロジェクトを dotnet core 2.0 にターゲットフレームワークを差し替えた時のお話。
コードファーストでDBを作るために、主題の通り dotnet ef migrations add XXX を実行したら Unable to create an object of type 'ApplicationDbContext' と怒られた。
ググったら既知の問題らしかったので、備忘録として残す。

解決方法

こちらに書かれている通り、Program.cs を修正する。

一応念のため、ソースコードを記載しておく。

public static void Main(string[] args)
{
    // REPLACE THIS:
    // BuildWebHost(args).Run();
 
    // WITH THIS:
    var host = BuildWebHost(args);
    using (var scope = host.Services.CreateScope())
    {
        // Retrieve your DbContext isntance here
        var dbContext = scope.ServiceProvider.GetService<ApplicationDbContext>();
 
        // place your DB seeding code here
        DbSeeder.Seed(dbContext);
    }
    host.Run();
 
    // ref.: https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/
}
 
public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .Build();

WebHost.CreateDefaultBuilder なんてねーよって怒られるとき

で、これだけじゃうまくいかないのが嫌なところ。
dotnet core 1.1 のプロジェクトがベースの場合、上記の通り、 WebHost.CreateDefaultBuilder が存在しないって怒られる。
これは、Nuget しているパッケージのバージョンも dotnet core 2.0 用に更新する必要があるから。

ここまでやって、やっと先に進めた。

けど・・・

結局マイグレーションがうまくいかない。
dotnet ef migrations add XXX を実行すと、成功したようになるんだけど、DB側にはテーブルが作られていない。
コードファースト諦めるかなぁ。要調査

dotnet ef コマンドが使用できないとき

↓参照でおk

http://kuttsun.blogspot.jp/2018/01/dotnet-ef_14.html

dotnet core 1.1 と 2.0 で挙動が違う件

[新しいプロジェクト]→[ASP.NET Core Web アプリケーション]で、「ASP.NET Core 2.0」を選択し、「Webアプリケーション(モデル ビュー コントローラー)」を選択し、「認証の変更」で「個別のユーザーアカウント」を選択する。

これで、デフォルトの状態でプロジェクトが作成される。
そのまますぐにF5デバッグで処理を開始すると、ブラウザが起動し、最初のテンプレート画面(localhost:XXXXX)が表示される。
が、ここで localhost:XXXXX/Home と入力すると、画面が更新されない。dot net core 1.1 であれば、 localhost:XXXXX/Home でも最初のテンプレート画面が表示されるのに。
これにより、画面追加しても、ブラウザからアクセスできない。どうしたものか・・・

と思っていたら、どうやら dot net core 2.0 から、標準プロトコルhttp から https になってるっぽくて、ブラウザ上で https://localhost:XXXXX/Home と直打ちすれば、なんとか動いてくれた・・・

後から気づいたこと

というか、これは私がWebブラウザに Vivaldi を使用しているのが理由っぽい。
Edge で起動すると、最初から https で接続された・・・。

SQL Server LocalDBであれこれの備忘録

とりあえず、まだよくわからないが、備忘録。

データベース作成方法

インスタンス名の列挙
C:\Users\kei>sqllocaldb info
MSSQLLocalDB
インスタンスのパイプ名取得
C:\Users\kei>sqllocaldb info MSSQLLocalDB
名前:               mssqllocaldb
バージョン:         13.0.1601.5
共有名:
所有者:             XXX-PC\kei
自動作成:        はい
状態:              実行中
前回の開始時刻:    2017/05/27 20:22:13
インスタンス パイプ名: np:\\.\pipe\XXXXXXXXXXXXX\tsql\query
インスタンスへ接続
C:\Users\kei>sqlcmd -S np:\\.\pipe\XXXXXXXXXXXXXX\tsql\query
1>
データベース一覧表示

goを付ける

select name from sys.databases;
go
データベースの作成
create database testdb
go

データベースの保存場所

VisualStudioのサーバーエクスプローラーでデータベースに接続する際に、保存場所を特定する必要がある。 なぜか、保存場所はデータベース作成方法によりばらつきがあるみたい。

SSMS(SQL Server Management Studio)を使用してデータベース作った場合

C:\Users\ユーザー名\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\インスタンス名

sqlcmdを使用してデータベースを作った場合

C:\Users\ユーザー名\直下

SQLServerへのアクセスについて

アプリからSQLServerへのアクセス方法について、現状、自分の中では以下の3候補がある

それぞれについて、簡単に調べてみる

ADO.net

LINQ to SQL と EntityFrameworkについて

同じこと

  • 両者ともLINQでテーブルをオブジェクトの集合として操作できるっぽい

違うこと

blog.shibayan.jp