Entity Frameworkを使ってみた①

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.configconnectionStringattachdbfilenameという項目があるのですが、そこのattachdbfilename=|DataDirectory|\Database1.mdf;の|DataDirectory|を作成したデータベースのフルパスに変えるといいんだそうです。|DataDirectory|とは、このプログラムのモジュールが出来るところで、配布する時にデータベースも一緒に配布できるように、コピーして勝手に作ってくれてたみたいでbinの下を見たらデータベースありました。。。こちらを更新していたみたいです。

更新、検索が出来たので、もうちょっとやってみようと思い、データベースを追加しました。edmxファイルをダブルクリックします。下記のような画面が出てくるので、そこで右クリックして、「データベースからモデルを更新」を選択して、

追加したテーブルを選択して

完了ボタンを押すと、新しいテーブルが追加されました!

しかし、肝心のアクセスクラスが生成されていない・・・。なぜ・・・・。検索して、何度もプロジェクトを作り直して、やっぱりダメ・・・。これは、自力で分かりました。どこか、外国の掲示板を直訳したサイトが出てきて、「ビルド」→「すべてのT4テンプレートの変換」を押すといいらしいんです。

こんなの知らないし・・・。

新しいことをやると必ずハマる(ーー:)データベースが更新できないのと、このモデルが更新されないのに何時間も使ってしまい、こんな事をしてて家事がまたおろそかになってしまいましたが(笑)次回、もうちょっと感想を書きたいです。

Follow me!

コメントする

PAGE TOP