У меня есть запрос, который выбирает каждое свойство из одной таблицы, однако запрос должен извлечь одно дополнительное свойство из другой таблицы.
Я использую простой пример, гдезапрос каждого свойства из второй таблицы не повлияет на производительность, однако реальная ситуация имеет много свойств.
Это модель запрашиваемой таблицы:
public class Car
{
public long Id;
public long SellerId;
public string Name;
public string SellerName;
}
Тем не менее, свойство SellerName не сопоставляется, поскольку это свойство относится к другой модели:
public class Seller
{
public long Id;
public string SellerName;
}
В настоящее время сопоставление классов автомобилей выполняется следующим образом:
Property(x => x.Id);
Property(x => x.SellerId);
Property(x => x.Name);
Это создастмодель, подобная этой:
Car Table
|------------------------------------------------|
|Id | SellerId | Name |
|1 | 1 | Car Number one |
|------------------------------------------------|
Employee Table
|---------------------------|
|Id | Name |
|1 | John Doe |
|---------------------------|
Используя простой запрос, я могу легко использовать внутреннее объединение для сбора данных автомобиля с соответствующим именем сотрудника:
select c.*, p.Name from Car c
inner join Employee e on c.Id = e.EmployeeId
Я уже пробовалэтот запрос:
var query = from car in session.Query<Car>()
join employee in session.Query<Employee>() on car.SellerId equals employee.Id
select new Car
{
Id = car.Id,
SellerId = car.SellerId,
Name = car.Name,
ClientName = employee.ClientName
};
Но на самом деле это создает два запроса в базе данных, один для таблицы клиента, а другой для сотрудника. И это не использует Linq, что также является обязательным требованием.