Какой предпочтительный способ CRUD'а с MongoDB (через драйвер C #)? - PullRequest
2 голосов
/ 05 мая 2011

Я буду перемещать свои веб-приложения в MongoDB, и я пытаюсь почувствовать «правильный путь» использования драйвера MongoDB C # в моем коде C #.

Я из мира MS SQL, где использую хранимые процедуры только при работе с SQL Server по следующим причинам:

  1. Код SQL полностью отделен от кода C #

  2. Простота настройки безопасности доступа SQL (вы делаете это на уровне сохраненных процедур)

  3. Логика SQL полностью отделена от логики C #.

По тем же причинам я никогда не использовал EF или LinqToSQL.

Ниже приведены некоторые вещи, которые я пытаюсь понять, прежде чем закатывать рукава и начинать миграцию кода:

  1. Нужно ли мне использовать какую-то оболочку (я использую самодельную оболочку OR между моим средним уровнем и низкоуровневыми вызовами ADO.NET к хранимым процессам; оболочка создает функции C #, которые внутренне вызывают SP)

  2. Должен ли я использовать js-серверные методы MongoDB вместо хранимых процедур - опять же, чтобы отделить логику sql от логики кода c # или shoudl, я перемещаю всю логику в C # и просто делаю простые вставки / обновления в MongoDB

  3. Любые другие рекомендации по правильному программированию моих приложений для использования с MongoDB

1 Ответ

4 голосов
/ 05 мая 2011

Обычным способом обработки операций CRUD с использованием драйвера C # для MongoDB является использование методов вставки, поиска, обновления и удаления MongoCollection.Существует также метод Save, который вызывает Insert для нового документа и Update для существующего документа.

Сами документы могут быть экземплярами BsonDocument, если вы хотите работать на довольно низком уровне, или экземплярами вашего документа.собственные классы C #, если вы хотите создать классы для вашей доменной модели.Драйвер C # может обрабатывать классы отображения C # в документах BSON и из них.

С MongoDB вы редко используете какую-либо сторону Javascript-сервера, поэтому на самом деле не требуется ничего эквивалентного вашим хранимым в SQL процессам.Вы просто делаете все в C #.

Вы можете решить создать слой доступа к данным, но он будет намного тоньше, чем все, что вы могли бы использовать с SQL Server, потому что драйвер C # обрабатывает сопоставление между объектами и документами BSON..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...