私はEFのさまざまなワークフローをいじっています。昨日、私は新しいプロジェクトを作成しEntity Framework 6
、最初の提案だったNuget
ので、試してみることにしました。また、これは完全に学習目的の非常に小さなプロジェクトなので、試すのは良い経験になると思いますEF 6
。Ef 5
.
Code First
私のアプリケーションはアプローチに基づいています。ソリューションの構造が印刷画面に表示されます。
このプロジェクトCodeFirstClasses
は、私のエンティティを保持するためのものです。簡単にするために、またチュートリアルに従っているため、ご覧のとおり、クラスを 1 つだけ使用しますCustomer.cs
。そこに私が持っています:
public class RewardContext : DbContext
{
//Specify the name of the base as Rewards
public RewardContext() : base("Rewards")
{
}
//Create a database set for each data item
public DbSet<Purchase> Purchases { get; set; }
public DbSet<Customer> Customers { get; set; }
}
Purchase
その他のクラスCustomer
は些細なことなので、ここには貼り付けません。
ご覧のとおり、もう 1 つのWindows Forms
プロジェクトは、フォームとボタンが 1 つだけのプロジェクトです。ボタンのclick
イベントでは、ハードコードされた 2 つのエンティティに新しいレコードを追加するためのすべてのロジックがあります。以下はその一部です。
//some code...
//Add the record and save it
context.Customers.Add(newCustomer);
context.Purchases.Add(newPurchase);
context.SaveChanges();
MessageBox.Show("Record Added!");
これまでのところ、私が慣れ親しんでいるものと何ら変わりはありませんEF 5
。プロジェクトをビルドして実行でき、すべてが期待どおりに実行されます。ただし、タイトルから次の警告が表示されます。
Warning 1 The element 'entityFramework' has invalid child element 'providers'. List of possible elements expected: 'contexts'.
そして、私は主に を使用していMS SQL Server Management Studio
ますが、IDE から接続/データベースを管理できないことに気付きました -Visual Studio 2012
が、これはEF 5
.
私の調査では、ファイルを手動で変更することで問題/解決策の可能性のある原因を絞り込みましたApp.config
が、これは特にIDEがEF 6
. したがってApp.config
、このソリューションの両方のファイルを投稿します。
CodeFirstClasses
プロジェクトからのもの:
<?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>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
そして私のTestCodeFirst
プロジェクトから:
<?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.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
そして、私が見つけた他の可能な解決策は次のとおりです。updating the xsd for "validating" EF config section in web/app.config file to recognize newly added EF6 elements
これは、正確に行う方法もわかりません。
開くと、このアプリケーション用に作成されたデータベースが表示されますが、レコードは保存されており、通常は機能しているように見えますが、この警告を解決し、アプリケーションを適切MS SQL Server Management Studio
に設定する方法を知りたい.EF 6