Лучшие практики для моделирования объектов при переходе от беглого NHibernate к Mongodb

В настоящее время мы находимся в процессе перехода от Fluent NHibernate к MongoDB. Мне было любопытно, что может быть лучшим способом моделирования моих объектов. По большей части я хотел оставить их в покое, но это может быть невозможно. Например, у меня есть эти два класса:

public class Config
{
    public int Id { get; set; }
    public virtual string Name { get; set; }
    public Filter Filter { get; set; }
}

public class Filter
{
    public int Id { get; set; }
    public virtual string Name { get; set; }
}

Теперь я понимаю, что нужно использовать Guid/string для Id, когда дело доходит до MongoDB. Это не проблема. У меня есть AutoMapper, меняющий это для меня при переносе данных. Меня беспокоит модель данных. Ясно, что когда я сохраняю Config как документ в MongoDB, я не хочу хранить полный объект Filter вместе с ним, потому что там есть отношение один ко многим. Хранение этого фильтра вместе с ним будет хранить избыточные данные. Есть ли способ через отображение MongoDB, чтобы сказать, хранить только идентификатор фильтра вместо всего объекта? Используя Fluent NHibernate, я могу заставить это правильно отображаться, используя эти объекты выше. Я надеюсь, что просто что-то упустил.

РЕДАКТИРОВАТЬ: я должен отметить, что очевидным решением было бы настроить класс Config, как:

public class Config : Entity
{
    private string _filterId;

    public int Id { get; set; }
    public virtual string Name { get; set; }

    public string FilterId
    {
        get
        {
            if (Filter == null)
                return null;

            _filterId = Filter.Id;
            return _filterId;
        }
        set { _filterId = value; }
    }

    public Filter Filter
    {
        get
        {
            // return code to grab Filter by _filterId from mongo
        }
    }
}

Однако это кажется мне грязным и не элегантным. Есть ли что-то лучше?

0 ответов

Другие вопросы по тегам