16

私はEFのさまざまなワークフローをいじっています。昨日、私は新しいプロジェクトを作成しEntity Framework 6、最初の提案だったNugetので、試してみることにしました。また、これは完全に学習目的の非常に小さなプロジェクトなので、試すのは良い経験になると思いますEF 6Ef 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

4

2 に答える 2