Полученное InvalidOperationException
сообщение:
Sequence contains no matching element
Поведение First
заключается в том, что он выдает это исключение, если элемент не найден.
Вы можете использовать FirstOrDefault
вместо First
и проверить null
. Для этой проверки можно использовать оператор слияния нуля (??
).
Foo ent = ctx.Foo.FirstOrDefault(f => f.ID == fid) ?? new Foo();
Обратите внимание, что есть аналогичная пара функций Single
и SingleOrDefault
, которые выдают исключение, если найдено более одного соответствующего элемента. В вашем конкретном случае, предполагая, что идентификаторы должны быть уникальными, было бы более целесообразно использовать SingleOrDefault
.