Slider_vm
@Slider_vm

Почему Entity Framework создает не правильный запрос?

Добрый день!

Есть сущность
public partial class countries
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public countries()
        {
            this.people = new HashSet<people>();
        }
    
        public int id { get; set; }
        public string full_name { get; set; }
        public string name { get; set; }
        public string full_name_eng { get; set; }
        public string name_eng { get; set; }
        public string iso_num { get; set; }
        public string iso2 { get; set; }
        public string iso3 { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<people> people { get; set; }
    }


В репозитории сделал метод
public countries FindFirst(Func<countries, bool> predicate)
        {
            return db.countries.FirstOrDefault(predicate);
        }


Вызываю метод из кода
public bool CountryExist(int iso)
        {
            var result = db.Countries.FindFirst(c=>c.iso_num == iso.ToString());
            return result != null ? true : false;
        }


Почему EF создает запрос без наложения условия WHERE?
SELECT * FROM countries
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
lasalas
@lasalas
.NET Architect
Почитай про разницу между IEnumerable<> и IQuerable<>
public countries FindFirst(Expression<Func<countries, bool>> predicate)
{
...      
}


CountryExist() оптимальнее переписать так:
public bool CountryExist(int iso)
{
    var isoNum = iso.ToString();
    return db.Countries.Any(c=>c.iso_num == isoNum);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы