Я новичок в Entity Framework. Недавно я создал базу данных, а затем добавил модель базы данных и начал ее кодировать. Но это очень очень медленно.Как повысить Entity Framework с помощью C#
Вот мои классы:
public partial class AssetList
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
[Required]
[StringLength(50)]
public string Barcode { get; set; }
public bool IsExist { get; set; }
}
private void btnLoad_Click(object sender, RoutedEventArgs e)
{
Stopwatch swTotal = null;
#region ADO select command
swTotal = Stopwatch.StartNew();
DataView dv = new SQL().GetDV("select * from AssetLists");
AssetList al = null;
for (int i = 0; i < dv.Count; i++)
{
al = new AssetList();
al.Id = int.Parse(dv[i]["Id"].ToString());
al.Name = dv[i]["Name"].ToString();
al.Barcode = dv[i]["Barcode"].ToString();
al.IsExist = bool.Parse(dv[i]["IsExist"].ToString());
dgAssetList.Items.Add(al);
}
swTotal.Stop();
MessageBox.Show(string.Format("ADO select command time: {0:N4} seconds.", swTotal.Elapsed.TotalSeconds));
#endregion
#region Entity Framework
swTotal = Stopwatch.StartNew();
using (var db = new dbModelContext())
{
db.Configuration.ProxyCreationEnabled = false;
//1
//IQueryable<AssetList> QUERY = from a in db.AssetLists
// where a.Id == 1
// select a;
//2
//var QUERY = from a in db.AssetLists
// where a.Id == 1
// select a;
//3
var QUERY = db.AssetLists.Select(a => new { a.Id, a.Name, a.Barcode, a.IsExist });
//.Where(a => a.Name.Contains("Asset"))
//.Where(a => a.Id < 5);
dgAssetList.ItemsSource = QUERY.ToList();
}
swTotal.Stop();
MessageBox.Show(string.Format("Entity Framework time: {0:N4} seconds.", swTotal.Elapsed.TotalSeconds));
#endregion
}
сообщения здесь:
ADO выбрать время команды: 0/0663 секунды.
Срок действия Entity Framework: 5/0479 секунд.
Время Entity Framework уменьшается при каждом повторном запуске приложения. Я имею в виду, что в первый раз это было более 5 секунд, после этого стало 3, а затем было 2. Я подождал несколько минут, а затем я начал приложение, и это снова 3 секунды.
Я думаю, что это увеличение и уменьшение связано с сетью, но почему ADO select command time
всегда составляет около 0/06 секунд и не изменится?
dgAssetList
- это DataGrid. У меня были некоторые подходы, но я не мог его поднять.
Кто-нибудь знает, что не так с моими кодами?
Сколько записей в таблице? Здесь вы в основном делаете выбор всех. Вы определили, что на самом деле EF работает медленно? EF, как известно, не самый быстрый, но что-то простое не должно занять много времени. – bump
@bump Только 6 строк с 4 колонками. –
Медленная база данных обычно означает плохую схему, отсутствующие индексы и/или плохое кодирование. Кроме того, что вы имеете в виду медленно? Как вы это измерили? Почему вы думаете, что это ошибка EF? –