ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

SQL Server LocalDb利用する

LocalDbの作成

Visual Studioから「表示」-「SQL Server オブジェクトエキスプローラー」を表示する。 f:id:haronoid:20180216205232p:plain

ローカルDBのデータベースより、新しいデータベースを作成 f:id:haronoid:20180216205426p:plain

DB名とファイルの場所を指定して、作成する。

Visual Studioのプロジェクトに追加する。

一番簡単だったのはEntityFrameworkを利用する場合だった。 プロジェクトに新しい項目追加で「ADO.NET Entity Data Model」を追加する。 f:id:haronoid:20180216205841p:plain エータベースからEF Desiginerを選択し、対象のファイルを選択する。 f:id:haronoid:20180216205925p:plain

新しいファイルを選択する場合は「新しい接続」より、対象ファイルを選択する。 f:id:haronoid:20180216210043p:plain

プロジェクトにモデルデザイナが追加され、「App.config」に「connectionStrings」が追加されている事が確認できる。

<connectionStrings>
  <add name="App1DBEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|App1DB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

自動でプロジェクトにmdfファイルがコピーされて入り、filepathがDataDirectoryになってしまう。

※ 特定フォルダーのファイルを参照したい場合は、|DataDirectory|をローカルパスに変更し、プロジェクト内のmdfファイルは削除する。

※ connectionStringsをLocalDBのプロパティの接続文字列を設定しても同じ動作になる。

<connectionStrings>
  <add name="App1DBEntities" connectionString="(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\LocalDB\App1DB.mdf;Integrated Security=True;Connect Timeout=30" providerName="System.Data.EntityClient" />
</connectionStrings>

ソース

App1DBEntities db = new App1DBEntities();
foreach (Users item in db.Users)
{
    Console.WriteLine(item.name);
}

DBの最新情報更新

DBの最新状態をソースに反映する方法、Entity Data Model画面上で「エータベースからモデルを更新」で最新化できる。 f:id:haronoid:20180216211146p:plain

参考: https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-mvc-app/working-with-sql?tabs=aspnetcore2x