У меня есть следующая модель:
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)
)
РЕДАКТИРОВАТЬ : модель домена выглядит следующим образом:
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?