Entity Frameworkとは、データ指向のソフトウェアアプリケーション開発をサポートするADO.NETのデータアクセス技術。by Wikipedia だそうです。ちょっと試しにやってみました。Visual Studio 2019にて行っています。
① Visual StudioでWindowsフォームアプリケーション(.Net Framework)を作成します。
② プロジェクト⇒NuGetパッケージの管理から「Entity Framework v6.4.4」を選択してインストールします。
③ プロジェクト⇒新しい項目の追加から「サービスベースのデータベース」を追加します。
④ サーバーエクスプローラーから作成したデータベースを右クリックし、「最新の情報に更新」。さらに、テーブルを右クリックして「新しいテーブルを追加」。
そこに「SampleTable」を作成します。こんな感じ。更新ボタンを押すとテーブルが作成されます。
⑤ プロジェクト⇒新しい項目の追加から「ADO.NET Data entity model」を追加。③の画像の一番上の項目です。「データベースからEF Designer」を選択して、③で作成したデータベースが出てくると思うので選択して作成します。そうすると、こんな感じでDBにアクセスするクラスを作ってくれるんですね。
⑥ そこでフォームにボタンを2つ配置し、それぞれの押下イベントで以下のように記述しました。
private void Button1_Click(object sender, EventArgs e)
{
try
{
using (var context = new Database1Entities())
{
context.SampleTable.Add(new SampleTable
{
Name = "Daisuke",
Id = 18
});
context.SaveChanges();
}
}
catch(Exception ex)
{
String sMsg = ex.Message;
}
}
private void Button2_Click(object sender, EventArgs e)
{
try
{
using (var context = new Database1Entities())
{
foreach(var sample in context.SampleTable)
{
String Name = sample.Name;
}
}
}
catch(Exception ex)
{
String sMsg = ex.Message;
}
}
ボタン1を押して、上記のコードを走らせてみると、エラーが起きないで正常に行ってるっぽい。そこでデータベースを見てみました。ない!空っぽ・・・・。なぜ・・・・。検索して、何度もプロジェクトを作り直して、やっぱりダメ・・・。仕方なく、掲示板に助けをお願いしました。
App.configのconnectionStringにattachdbfilenameという項目があるのですが、そこのattachdbfilename=|DataDirectory|\Database1.mdf;の|DataDirectory|を作成したデータベースのフルパスに変えるといいんだそうです。|DataDirectory|とは、このプログラムのモジュールが出来るところで、配布する時にデータベースも一緒に配布できるように、コピーして勝手に作ってくれてたみたいでbinの下を見たらデータベースありました。。。こちらを更新していたみたいです。
更新、検索が出来たので、もうちょっとやってみようと思い、データベースを追加しました。edmxファイルをダブルクリックします。下記のような画面が出てくるので、そこで右クリックして、「データベースからモデルを更新」を選択して、
追加したテーブルを選択して
完了ボタンを押すと、新しいテーブルが追加されました!
しかし、肝心のアクセスクラスが生成されていない・・・。なぜ・・・・。検索して、何度もプロジェクトを作り直して、やっぱりダメ・・・。これは、自力で分かりました。どこか、外国の掲示板を直訳したサイトが出てきて、「ビルド」→「すべてのT4テンプレートの変換」を押すといいらしいんです。
こんなの知らないし・・・。
新しいことをやると必ずハマる(ーー:)データベースが更新できないのと、このモデルが更新されないのに何時間も使ってしまい、こんな事をしてて家事がまたおろそかになってしまいましたが(笑)次回、もうちょっと感想を書きたいです。