У меня есть webAPI, который получает список объектов.В настоящее время эти данные передаются в хранимый процесс в качестве объекта таблицы данных, но, поскольку dataDump может содержать тысячи записей ResponseAPI, это оказывается немного медленным.
Итак, я начал изучать концепцию использования EF для загрузки, толкая все изменения за один раз, используя SaveChanges для контекста.
var dataDump = new List<ResponseAPI>
{
new ResponseAPI
{
Id= "1000",
Code = "C15",
value = "1976"
},
new ResponseAPI
{
Id = "999",
Code = "C14",
value = "1976"
}
};
var step2 = from l in dataDump
join p in Plants on new { X1 = l.Code } equals new { X1 = p.Code }
join ps in PlantTypes on new { X1 = l.Code, X2 = p.Id } equals new { X1 = ps.Code, X2= ps.Id}
where ps.TypeName == "Daisy"
select new {
Code = l.Code,
Id = p.Id
};
Насколько я могускажите, этот код работает, ошибок не выдается.Я пытаюсь получить список идентификаторов из dataDump, которые в настоящее время не существуют в таблице Plants.
Я добился определенного успеха, используя другую технику, но только с одним соединением таблицы.
var step1 = dataDump.Where(s =>
s.Code.Any(
a => !context.Plants
.Select(x => x.Code)
.Contains(s.Code)))
.Select(s => s.Code)
.Distinct()
.ToList();
Первый фрагмент "step2" просто выполняет базовое соединение между таблицами, и это работает, но я не уверен, как этого добиться!на соединениях.
Второй фрагмент "step1" не имеет!в контексте, который выполняет работу только по возврату значений из dataDump, которых нет в таблице Plants.
Моим предпочтительным методом будет step1, но я не делаю, как добавить второе соединение, связывающее дваполя.