MongoDB: нормализованная модель хранилища для встроенного домена - PullRequest
2 голосов
/ 01 ноября 2011

Я определил, что реляционная модель имеет больше смысла для конкретной коллекции в базе данных. Проблема в том, что модель предметной области изначально была запущена со встроенной моделью, и существует большой объем кода пользовательского интерфейса, который ожидает, что он будет в такой форме. Обновление схемы базы данных не является проблемой, но мне любопытно, есть ли какой-нибудь простой способ переделать объекты домена C # в более старомодную реляционную модель. Я начал писать мапперы (с AutoMapper) между первой и второй версиями (см. Классы ниже), но это очень быстро запутывается.

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

// Existing
class MyClass
{
    List<Event> Events { get; set; }
    List<Movie> Movies { get; set; }
}

// How it should have been modeled
class MyClass
{
    List<int> Events { get; set; } // Stores Event IDs
    List<int> Movies { get; set; } // Stores Movie IDs
}

База данных должна быть нормализована.

Если мне нужно переделать модель предметной области, это нормально; Я просто хочу чувствовать себя комфортно, я исчерпал другие возможности, которые могут сэкономить время. Есть ли простое решение этой проблемы, которую я пропускаю?

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Если единственной целью вашей реструктуризации является реляционная база данных, я бы посоветовал вам изучить O / R mapping .Модуль преобразования O / R, например NHibernate или Entity Framework , должен иметь возможность сопоставить вашу существующую встроенную модель с реляционной базой данных.Использование O / R Mapper может отменить необходимость реконструкции вашего домена.

0 голосов
/ 07 ноября 2011

Учитывая конкретную проблему, казалось, что единственными двумя вариантами, которые я мог бы оправдать, были два, о которых я упоминал в своем первоначальном посте (сопоставление данных вручную или изменение объекта моего домена). В конечном счете, для меня путь наименьшего сопротивления состоял в том, чтобы отобразить данные вручную. Я ценю предложение от pjvds , но я не смог оправдать переход на новый ORM на этом этапе проекта, учитывая, что с драйвером C # MongoDB лучше работает много других вещей, а также что маппер не необходимо для других частей нашей базы данных.

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