3 метода для добавления “продукта” через Платформу Объекта.Какая разница?

При чтении этой статьи MSDN, названной, "Работая с ObjectSet (Платформа Объекта)", Это показывает два примера о том, как добавить продукт.. один для 3,5 и другой для 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);
   }

Каково различие между этими тремя путями?

"Мой путь" просто другой способ использовать ObjectQuery?

Спасибо, Kohan

9
задан 4imble 11 May 2010 в 13:19
поделиться

1 ответ

Все они делают одно и то же, с небольшими различиями в синтаксисе.

Во-первых, давайте посмотрим на путь 3.5 и «ваш путь». Если вы посмотрите файл кодогенерации для вашего EDMX, вы увидите что-то вроде:

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

Итак, эти два метода абсолютно одинаковы, за исключением того, что волшебная строка в вашем коде заменена версией, созданной с помощью кода, которая никогда не может быть ошибочной.

".NET 4 way" делает то же самое, но по-другому. Он использует строго типизированный ObjectSet , который позволяет динамически создавать строго типизированную ссылку, но без использования строк. Однако в случае добавления объекта в контекст нет реального преимущества, о котором я знаю, за исключением того, что он позволяет вам быть более последовательным в том, как вы ссылаетесь на свои сущности - вы читаете их из контекста, используя то же свойство ( Context.Products ), которые вы используете для их записи.

9
ответ дан 4 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: