Я пытаюсь получить данные из БД определенной таблицы, где нет или нет соединения с другой таблицей, или есть, но это не те данные.
Структура
У меня есть таблица доменов.Все, что это делает, это содержит доменное имя и несколько других разнородных метаданных.
У меня есть таблица характеристик, все это имеет столбец идентификатора и столбец для значения этой функции.Например, это может выглядеть так:
1 | First Registered
2 | Expired On
3 | Hosted On
и т. Д.
У меня есть таблица DomainData.Это содержит значения для функций.Колонны примерно такие.
ID |DomainId |FeatureId |Значение
По существу, оно содержит значение функции для этого домена, что-то вроде столбца значения ключа, так что его можно расширять без изменения структуры таблицы таблицы Domain.
Теперь мне нужно сделать запрос для всех доменов, у которых нет функции X.
Например, это работает в SQL:
SELECT D.*
FROM Domain AS D
LEFT OUTER JOIN DomainData AS Data ON Data.DomainId = D.Id
WHERE data.featureId IS NULL OR data.FeatureId != @FeatureId
Это прекрасно работает в SQL и возвращает все необходимые данные.Все, что нужно, - это захватить все домены, у которых либо НЕТ функций, либо они имеют функции, но не те, которые мне нужны.
Теперь я использую CastleActiveRecord в качестве своего слоя данных, но я пытаюсь понять, как я могу написать это на HQL.Потратил много времени на это сейчас, и я либо ничего не получаю, либо я возвращаю ВСЕ домены, независимо от их идентификатора функции.К сожалению, я удалил все операторы HQL, которые я пробовал.
Могу ли я получить некоторую справку о том, как переписать вышеприведенный оператор в HQL?
Примечание: Внутри моих классов это есть внутри класса DomainData:
[BelongsTo("DomainId")]
public Domain Domain { get; set; }
[BelongsTo("FeatureId")]
public Feature Feature { get; set; }
И это в моем доменном классе:
private IList<DomainData> featureData = new List<DomainData>();
[HasMany(typeof(DomainData), Table = "DomainData", ColumnKey = "DomainId")]
public IList<DomainData> FeatureData
{
get { return featureData; }
set { featureData = value; }
}
Я думаю, что это правильная структура данных?Но поправь меня, если я ошибаюсь.Это может быть то, как я делаю структуру, а не сам запрос.