Лучшие практики для моделирования объектов при переходе от беглого 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
}
}
}
Однако это кажется мне грязным и не элегантным. Есть ли что-то лучше?