Где почитать/посмотреть про реализацию нормализованной модели данных в связке C# ASP.NET MVC + MongoDB?

Где посмотреть/почитать сложные примеры реализации нормализованной модели данных и CRUD операций с использованием C# MVC и MongoDB? Либо на русском, либо на английском языке. Под нормализованной моделью я подразумеваю следующее:
data-model-normalized.png
Какие бы примеры я не находил, везде рассматривается элементарнейший подход, что-то типа:
1. Берем драйвер монги для сисярпа и реализуем обертку для коллекции.
2. Создаем новый класс:
public class Post
{
    [BsonId]
    public ObjectId PostId { get; set; }
 
    public string Title { get; set; }
 
    public string Text { get; set; }
}

3. И сохраняем объект этого класса, используя обертку для коллекции:
var Post1 = new Post
{
  Title = "Title of post",
  Text= "Lorem ipusm dolor sit amet."
};
_postCollectionWrapper.InsertOne(Post1);

4. Конец гайда.

Есть люди, задающие подобный моему вопрос. А им отвечают: ты что совсем дурачек, монго - это документо-ориентированное хранилище, используй вложенные документы. Так вот мой вопрос НЕ про вложенные документы. Пожалуйста отвечайте по теме вопроса. Может есть какие-то ORM/ODM решения. Может есть какие-то статьи или книги. Может еще что-то, чего я не знаю.

Документацию самой монги и конкретно драйвер для C# я прочитал на несколько раз, но из-за недостатка опыта и знаний в программировании у меня ничего не выходит. Особенно мне не понятно какие ступени и в какой последовательности проходит C# объект (POCO) при сохранении его в коллекцию монги. И как манипулировать/переопределять эти ступени или вклиниваться в них. Плюс ко всему делать все это я пытаюсь на MVC 6. По которому тоже сейчас хрен что найдешь, из-за новизны. Например как запилить кастомный ModelBinder.

Может найдется человек, шарящий в C# .NET MVC/MongoDB, которому я смогу иногда задавать вопросы (по скайпу например). Буду рад любой помощи.
  • Вопрос задан
  • 815 просмотров
Пригласить эксперта
Ответы на вопрос 3
schart
@schart
.NET Developer
Дело в том, что MongoDb (да и вообще NoSQL решения) не подразумевает отношений между коллекциями (таблицами в терминологии RDBMS). По этой же причине нет внешних ключей, нет транзакций (есть только атомарные операции), как правило нет четкой схемы данных.
Это та цена, которую Вы платите за легкость в горизонтальном масштабировании.

По этим причинам многие вещи обязано реализовывать и контролировать приложение. Тот же контроль внешних ключей и транзакции, например. Реализация этих вещей во многом зависит от бизнес-процессов и логики приложения. Именно поэтому нет какого-то универсального решения и рецепта.

В Вашем случае, Вы САМИ должны прописывать в contact, access поле userId. Вы САМИ должны контролировать корректность его заполнения и актуальность значений.

Все это, безусловно, можно реализовать в MongoDB. Однако, мне кажется для Вашей задачи больше подойдут Postgres, MSSQL, etc.

Советую посмотреть: https://habrahabr.ru/post/259219/ https://habrahabr.ru/post/260291/
Ответ написан
RouR
@RouR
Ты не задумывался, что если об этом никто не пишет, то скорее всего так никто не делает?
Нафига тебе монга? Тупо чтобы было? Используй MSSQL, а монгу только под какую-то отдельную сущность, если там действительно так надо.
Ответ написан
@Flaksirus
Не очень понимаю, зачем нужен кастомный ЬщвудИштвук, когда в драйвере есть мощнейшие аттрибуты, которые полностью описывают, что делать с модлью и как. И вообще задача "нормализованной модели" мне не понятна.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы