У меня есть следующие модели:Сравнение с кол-во внутреннем подзапроса (NHibernate QueryOver API)
create table Products (
Id UNIQUEIDENTIFIER not null,
Name NVARCHAR(255) null,
CategoryId UNIQUEIDENTIFIER not null,
primary key (Id),
unique (Name, CategoryId)
)
create table Rates (
Id UNIQUEIDENTIFIER not null,
Price NUMERIC(19,5) not null,
TimeStamp DATETIME not null,
UserId UNIQUEIDENTIFIER not null,
ProductId UNIQUEIDENTIFIER not null,
primary key (Id),
unique (Price, UserId, ProductId)
)
create table Categories (
Id UNIQUEIDENTIFIER not null,
Name NVARCHAR(255) not null unique,
primary key (Id)
)
EDIT: Модель предметной области выглядит следующим образом:
public class Category
{
public string Name { get; set; }
public IList<Product> Products { get; set; }
public Guid Id { get; set; }
}
public class Product
{
public string Name { get; set; }
public Category Category { get; set; }
public IList<Rate> Rates { get; set; }
public Guid Id { get; set; }
}
public class Rate
{
public User User { get; set; }
public Product Product { get; set; }
public decimal Price { get; set; }
public DateTime TimeStamp { get; set; }
public Guid Id { get; set; }
}
То, что я хочу сделать - выбрать все категории, у которых нет связанных продуктов со связанными тарифами. То есть в SQL это будет выглядеть так:
select * from Categories category where
(select count(*)
from Products product
inner join Rates rate on rate.ProductId = product.Id
where product.CategoryId = category.Id) = 0;
Как это сделать, используя API QueryOver?
Я не вижу ни одной доменной модели; Я вижу только вашу модель базы данных. Чтобы иметь возможность ответить на ваш вопрос, нам нужно будет знать, как выглядят классы. (Рядом с этим, я думаю, ваш SQL-запрос неверен). –
@FrederikGheysels, под редакцией. – eigenein