Я использую Entity Framework 5 в приложении MVC. Я сохраняю список совпадений, и до того, как я сделаю фактическое обновление, я хочу загрузить все найденные совпадения в EF-память.Linq для объектов с любой ошибкой возврата
У меня есть следующий код (который работает). _context мой EfDbContext:
public bool UpdateMatches(IEnumerable<Match> matchesToUpdate, int userID)
{
matchesToUpdate = matchesToUpdate as List<Match> ?? matchesToUpdate.ToList();
var matchIDs = matchesToUpdate.Select(m => m.ID).ToArray();
_context.Matches.Where(x => matchIDs.Contains(x.ID)).Load();
}
Но то, что я на самом деле хочу что-то вроде этого:
public bool UpdateMatches(IEnumerable<Match> matchesToUpdate, int userID)
{
_context.Matches.Where(m => matchesToUpdate.Any(x => x.ID == m.ID)).Load();
}
Но я получаю ошибку
«Невозможно создать постоянное значение типа «Совпадения». В этом контексте поддерживаются только примитивные типыили типы перечислений ».
Я также пробовал его с Содержит, но не повезло. Что я делаю не так?
Привет, Марцин, спасибо! Это действительно работает, как и в моем первом примере. Но это невозможно сделать в одной строке? Вам всегда нужно сначала получить список идентификаторов? – kloarubeek
Боюсь, что да. – MarcinJuraszek
нормально, слишком плохо. И что это тогда? http://stackoverflow.com/questions/2846013/does-entity-framework-4-have-a-contains-feature – kloarubeek