Я пытаюсь загрузить объекты клиента из моей базы данных, где имя клиента может содержать определенную строку, а также любые связанные адреса, имеющие конкретные значения в определенных полях.Я провел немало исследований и т. Д., Чтобы собрать это воедино.Является ли это правильным способом построения такого запроса, а если нет, то какой подход более правильный или более эффективный?Спасибо за ваше время.
У меня есть LINQPad, и этот запрос был обработан с его использованием.
var customerName = "J";
var street = "Rd";
var city = "asdf";
var state = "TN";
var zip = "27613";
var query = (
from c in customers
.Include("locations")
.Include("locations.address")
where
c.name.Contains(customerName) ||
c.locations.Any(l => l.address.street1.Contains(street)) ||
c.locations.Any(l => l.address.street2.Contains(street)) ||
c.locations.Any(l => l.address.city.Contains(city)) ||
c.locations.Any(l => l.address.state.Contains(state)) ||
c.locations.Any(l => l.address.zip.Contains(zip))
select new
{
c.id,
c.name,
c.locationId,
c.location,
Locations =
from l in c.locations
where
l.address.street1.Contains(street) ||
l.address.street2.Contains(street) ||
l.address.city.Contains(city) ||
l.address.state.Contains(state) ||
l.address.zip.Contains(zip)
select new
{
l.id,
l.address,
l.description,
l.locationType
}
}
);
query.Dump();
Это дает мне желаемые результаты, но я хочу убедиться, что я делаюлучший способ, который является наиболее вежливым для базы данных.
Я уверен, что это довольно типичный шаблон поиска с использованием Entity Framework.