В старом приложении БД я бы хотел начать переход к подходу, основанному на коде.
В базе данных много SP, триггеров, функций и т. Д., Что делает их подверженными ошибкам.
Для начала я хотел бы получить подтверждение концепции, поэтому я начал с нового решения, в котором импортировал всю базу данных (Добавить новый элемент -> Модель данных сущности ADO.NET -> Код сначала избаза данных)
В качестве простого первого шага я хотел запросить 1 столбец 1 таблицы.Таблица содержит около 5 тыс. Строк, и в результате получается 3 тыс. Строк.Теперь это занимает более 90 секунд!
Вот код запроса:
static void Main(string[] args)
{
using (var db = new Model1())
{
var theList = db.T_MyTable.AsNoTracking()
.Where(t => t.SOME_UID != null)
.OrderBy(t => t.SOMENAME)
.Select(t => t.SOMENAME)
.ToList();
foreach (var item in theList)
{
Console.WriteLine(item);
}
Console.WriteLine("Number of names: " + theList.Count());
}
Console.ReadKey();
}
В сгенерированном коде таблицы я добавил тип столбца «VARCHAR» во все строковые поля / столбецсвойства:
[Column(TypeName = "VARCHAR")] // this I added to all of the string properties
[StringLength(50)]
public string SOME_UID { get; set; }
Полагаю, я пропустил важный шаг, не могу поверить, что первый запрос кода слишком медленный.