Сохранение и обновление (строки SQL Server) с использованием SubSonic 3.0 и LINQ - PullRequest
1 голос
/ 15 декабря 2010

Я чувствую себя глупо, задавая такой фундаментальный вопрос, но было бы глупее не спрашивать:)

Я использую SubSonic 2.x уже много лет и мне это нравится (спасибо Робу и сотрудникам).

Я запустил пилотный проект с использованием SubSonic 3.0.0.4 и выбрал шаблоны LINQ T4 (извините, если у меня неверная терминология).

Сейчас я новичок в LINQ, но я делаюХорошо, вы знаете, как создавать запросы.

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

Раньше это было очень просто, где я мог:

  • 'новый' объект, если у меня не было одного
  • или выборка или создание существующего по id
  • , установка некоторых свойств
  • затем'Save ()' it

Фантастически и сэкономило мне часы.

Теперь в новом наборе инструментов некоторые вещи выглядят так же, как:

  • создание объекта
  • с установкой некоторых свойств

но сейчас некоторые вещи кажутсянамного сложнее, например:

  • Загрузка объекта выглядит следующим образом:
db.Product.FirstOrDefault(x => ProductID.Id == 123);
  • Вставка выглядит так:
db.Insert.Into<Northwind.Region>(
         x => x.RegionID, 
         x => x.RegionDescription)
        .Values(6, "Hawaii").Execute();
  • Обновление объекта кажется еще сложнее:
db.Update<Product>()
    .Set(x => x.UnitPrice == 100, x => x.ProductName == "Test")
    .Where(x => x.ProductID == 1).Execute();

Документация (http://subsonicproject.com/docs/Linq_Updates) докладыоб использовании репозитория, но он просто не существует / генерируется с помощью шаблонов T4, которые я использую.

Так что помогите мне сообщить, что:

  1. Я, очевидно, установилэто неправильно
  2. Я понятия не имею, что я делаю, и способ сделать это ... вставить ответ здесь
  3. Я правильно понимаю и должен просто смириться с этим

с благодарностью.

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Заранее спасибо.

Отметка

---- Обновление ----

Чтобы подвести итог ответа Дениса:

LINQ - это язык запросов, а не ORM

Вы можете попасть в объект Repository через:

var repo = new SubSonic.Repository.SubSonicRepository (db);

1 Ответ

0 голосов
/ 18 декабря 2010

Хм ... Я тоже перенес один из своих проектов на SubSonic 3, но, честно говоря, не было проблем с сохранением сущностей.Я использую те же методы ActiveRecord, и он все еще отлично работает для меня.Например, чтобы получить сущность, которую я выдаю:

var product = new Product(p => p.Id == 123);

Для вставки:

var product = new Product();
product.RegionID          = 6;
product.RegionDescription = "Hawaii";
product.Save();

Обновление:

product.UnitPrice   = 100;
product.ProductName = "Test";
product.Save();

Как видите, вы все еще можете видетьиспользуйте тот же Save() метод.

Итак, не совсем уверен, почему вы пытаетесь сделать это через контекст 'db', даже если его тоже можно использовать :) Я что-то упустил?

...