Беглый nHibernate какой-то плоский стол - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть одна проблема (очевидно :)) Возможно ли выполнять динамические запросы в nHibernate таким образом ... У меня есть много таблиц (скажем, User, City, Country, Continet, ...)можно разбить эти данные, поэтому мне не нужно знать объединения между этими таблицами (получить континент для пользователя, не делая join user.city, city.country, coutry.continent)?

Суть в том, что я хочучто-то вроде сглаживания данных, чтобы пользователь мог динамически выбирать данные в пользовательском интерфейсе, не зная модель данных, стоящую за приложением?

Было бы здорово, если бы кто-то дал мне хотя бы идею, как это сделать, или, если это возможно ...

Одним из примеров в Интернете являются пользовательские отчеты GoogleAnalytics (вы можете перетаскивать измерения и метрики в пользовательский интерфейс и получать результаты)

1 Ответ

0 голосов
/ 15 февраля 2011

Вы сказали, что используете Fluent NHibernate, что означает, что, если ваша модель домена структурирована правильно, вам не нужно использовать какие-либо объединения.

«Сглаживание» данных относится к пользовательскому интерфейсу, а не к базе данных, поэтому вам не следует уплощать модель данных или упрощать ее для пользовательского интерфейса, если в этом нет необходимости.

Предположим, у вас есть следующие объекты:

public class User
{
    public virtual string Name { get; set; }
    public virtual City City { get; set; }
}

public class City
{
    public virtual string Name { get; set; }
    public virtual Country { get; set; }
}

public class Country
{
    public virtual string Name { get; set; }
}

Если вы хотите отфильтровать пользователей по определенной стране, запрос LINQ для этого (при условии NHibernate 3) будет:

var country = session.Single<Country>(x => x.Name == "Africa");
session.Query<User>().Where(x => x.City.Country == country);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...