Entity Frameworkの初心者です。サンプルのプログラムをVisualStudio2019で作成しました。
手順は以下の通りです。
① Visual StudioでWindowsフォームアプリケーション(.Net Framework)を作成。
② プロジェクト⇒NuGetパッケージの管理から「Entity Framework v6.4.4」を選択してインストール
③ プロジェクト⇒新しい項目の追加から「サービスベースのデータベース」を追加。
④ サーバーエクスプローラーで作成したデータベースに「SampleTable」を作成。
⑤ プロジェクト⇒新しい項目の追加から「ADO.NET Data entity model」を追加。
- 「データベースからEF Designer」を選択して作成。
- ③で作成したデータベースを接続して作成。
⑥ フォームにボタンを2つ配置し、それぞれの押下イベントで以下のように記述しました。
ボタン1
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; } }
ボタン2
private void Button1_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; } }
App.configは以下のようになっています。
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <entityFramework> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> <connectionStrings> <add name="Database1Entities" connectionString="metadata=res://*/SampleModel.csdl|res://*/SampleModel.ssdl|res://*/SampleModel.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\Database1.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings> </configuration>
まず、ボタン1を押すとExceptionは発生しないのに、データベースにデータが
入っていません。
次に、ボタン2を押すと、1件データが入っています。これはボタン1にcontextオブジェクトに設定したデータと思われます。
一旦、アプリを再起動してボタン2を押すと、当然データは入っていません。
手入力でデータベースにデータを設定して、ボタン2を押すとデータベースの
内容が読み込まれていました。
なぜ、更新できないのでしょうか?
回答1件
あなたの回答
tips
プレビュー