C# Entity Framework

324
05 июня 2017, 21:18

Здравствуйтe, помогите разобраться пожалуйста Надо по первым 3 символам или больше в textBox найти записи в базе данных и отобразить их в Listbox.
Есть код

public partial class Form1 : Form
{
    Model1 db;
    public Form1()
    {
        InitializeComponent();
        db = new Model1();
        db.OrdersBs.Load();
        db.refdets.Load();
        textBox1.TextChanged += textBox1_TextChanged;
    }
    public void textBox1_TextChanged(object sender, EventArgs e)
    {
        string str = textBox1.Text.Trim();
        int s = textBox1.Text.Count();
        if (s > 2)
        {
            var customers25 = db.refdets.Local.Where(c => c.partnumber.StartsWith(str));
            int count = db.refdets.Local.Count;
            if (count > 0)
            {
                foreach (refdet c in customers25)
                {
                    listBox1.Items.Add(c.partnumber + c.descript + c.price.ToString());
                }
            }
        }
    }
}

Но после введения 3 символов выполнение зависает. Предполагаю что это из-за того , что слишком много записей в таблице или неправильный код

Answer 1

Сделайте метод textBox1_TextChanged асинхронным. В вашем случае, он может выглядеть так:

public async void textBox1_TextChangedAsync(object sender, EventArgs e)
{
    string str = textBox1.Text.Trim();
    int s = textBox1.Text.Count();
    if (s > 2)
    {
        // Асинхронно получаем данные
        var customers25 = await db.refdets.Where(c => c.partnumber.StartsWith(str)).ToListAsync();
        foreach (var c in customers25)
        {
            listBox1.Items.Add(c.partnumber + c.descript + c.price.ToString());
        }
    }
}
READ ALSO
Как заменить текст в docx

Как заменить текст в docx

Есть документ с содержимым вроде "Привет [[username]]"Нужно программно заменить "[[username]]" на свой текст не испортив форматирование и не используя...

420
SqlBulkCopy вылетает по TimeOut

SqlBulkCopy вылетает по TimeOut

Сначала пытался закинуть в SqlBulkCopy DataTable из 1000 (Для теста), но получил ошибку таймаута

365
Передача данных между формами

Передача данных между формами

Здравствуй ХэшКод, скажите у меня есть

383
Entity Framework и сборщик мусора

Entity Framework и сборщик мусора

Или все привязано к контексту и нужно его пересоздавать?

292