SubSonic, ORM, edmx, Linq: сериализуемая связь по БД? - PullRequest
0 голосов
/ 22 декабря 2011

следующий сценарий ожидает хороших альтернатив:

  • центральная служба Windows, написанная на .NET, принимает клиентов для запроса базы данных в фоновом режиме (а также позволяет им записывать в БД).
  • клиенты должны иметь возможность использовать .NET Remoting старого стиля для совместимости (или может быть сделан очень простой переход к WCF)
  • в настоящее время запросы отправляются через самодельные объекты, которые содержат стандартные инструкции (Insert, Update, SelectCommand) или прямой SQL-запрос на основе строки, но для использования Linq все записи должны быть перенаправлены на локальный клиент
  • должен работать с оракулом и MSSQL
  • События отправляются клиентам с сервера при изменении данных в таблице - это обязательно!

Это основные требования. Теперь мы начали оценивать переход на Linq с помощью edmx, но боимся потерять гибкость, и нам пришлось бы переписать почти весь код обработки Db. Существенное улучшение, которое мы хотели бы видеть, - это привязка Linqed к сети, так что мы можем использовать запросы Linq, не подключаясь напрямую к уровню EMF в .NET 4. И я начал исследование альтернатив ORM и столкнулся с дозвуковым прямо сейчас.

Итак, чтобы начать задавать вопрос :) - можно ли будет использовать SubSonic таким образом, чтобы у клиента были все знания об объектах, но преобразование запроса и соединение Db размещаются только на центральном сервере? Мы хотим отделить прямой доступ к Db из-за событий Db, репликации и других специфических функций, необходимых для наших приложений.

С уважением, Флориан

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Ваш вопрос очень широкий - я могу ответить только на одну крошечную часть.

SubSonic ORM 3.0 содержит переводчик Linq to SQL. Ваши запросы Linq преобразуются в SQL, и только те строки, которые вы фактически используете, возвращаются клиенту. Эффект такой же, как если бы вы написали собственный SQL, и действительно вы можете получить сгенерированный SQL.

Большая часть вашего вопроса, кажется, выходит за рамки, потому что речь идет скорее о распределенной обработке запросов, а не о простых вещах ORM.

0 голосов
/ 22 декабря 2011

Был проект, InterLINQ , который был нацелен на то, чтобы удовлетворить потребность, аналогичную той, что вы описываете, несколько общим способом (универсальным, например, для работы с несколькими поставщиками запросов на стороне сервера). , Я никогда не использовал этот проект, и кажется, что он не разрабатывался более года, и ему не хватает документации.

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

...