9

「ObjectSet(Entity Framework)の操作」というタイトルのこのMSDNの記事を読む製品を追加する方法の2つの例を示します。1つは3.5用、もう1つは4.0用です。

http://msdn.microsoft.com/en-us/library/ee473442.aspx

知識が不足しているため、ここで何かが完全に欠落している可能性がありますが、次のような製品を追加したことはありません。

   //In .NET Framework 3.5 SP1, use the following code: (ObjectQuery)
   using (AdventureWorksEntities context = new AdventureWorksEntities())
   {
      // Add the new object to the context.
      context.AddObject("Products", newProduct);
   } 

   //New in .NET Framework 4, use the following code: (ObjectSet)
   using (AdventureWorksEntities context = new AdventureWorksEntities())
   {
      // Add the new object to the context.
      context.Products.AddObject(newProduct);
   }

私はどちらの方法でもそれをしなかったでしょう、そしてただ使用しました:

   // (My familiar way)
   using (AdventureWorksEntities context = new AdventureWorksEntities())
   {
      // Add the new object to the context.
      context.AddToProducts(newProduct);
   }

これらの3つの方法の違いは何ですか?

「私の方法」は、ObjectQueryを使用する別の方法ですか?

ありがとう、コーハン

4

1 に答える 1

9

それらはすべて同じことをしますが、構文にわずかな違いがあります。

まず、3.5の方法と「あなたの方法」を見てみましょう。EDMXのcodegenファイルを見ると、次のようなものが表示されます。

    public void AddToProducts(Product product)
    {
        base.AddObject("Products", product);
    }

したがって、これら2つの方法はまったく同じですが、コード内のマジックストリングが、間違いのないコード生成バージョンに置き換えられる点が異なります。

「.NET4ウェイ」は同じことをしますが、違う方法で行います。強く型付けされObjectSet<T>たを使用します。これにより、文字列を使用せずに、強く型付けされた参照を動的に作成できます。ただし、オブジェクトをコンテキストに追加する場合、エンティティの参照方法についてより一貫性を保つことができることを除いて、私が知っている本当の利点はありません。同じプロパティを使用してコンテキストからオブジェクトを読み取ります。 (Context.Products)それらを書くために使用します。

于 2010-05-11T13:41:22.463 に答える