- Почему EF Core не может преобразовать статический ICollection только для чтения и статический только для чтения IList в запрос при использовании его внутри .Contains()? При удалении ключевого слова static кажется, что запрос выполняется нормально?
- При использовании IEnumerable Это не проблема, это из-за разные .Contains(), которые используются?
Это происходит только тогда, когда список/коллекция являются статическими. Почему здесь это так важно для перевода запроса?< /li>
Скажем, у меня есть эта модель базы данных при использовании EF Core:
Код: Выделить всё
public class Item
{
public string Bar { get; set; }
public string Foo { get; set; }
}
р>
Код: Выделить всё
private static readonly IList AllowedFooCodes = new List() { "ABC", "CED" };
Код: Выделить всё
public class SampleDataRepository : ISampleDataRepository
{
private readonly ILogger _logger;
private readonly SampleDataStore _sampleDataStore;
// Can be IList or ICollection, exception will be thrown regardless.
private static readonly IList AllowedFooCodes = new List() { "ABC", "CED" };
public SampleDataRepository(SampleDataStore store, ILogger logger)
{
_sampleDataStore = store;
_logger = logger;
}
public async Task GetItems()
{
_sampleDataStore.Items
.AsNoTracking()
.Where(item => AllowedFooCodes.Contains(item.foo))
.ToListAsync();
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ection-lis
Мобильная версия