چگونه نرم افزارهای تحت وب سریعتری داشته باشیم؟ قسمت سوم
نویسنده: دادگر
تاریخ: ۱۳۹۲/۰۵/۱۱ ۱۲:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
8.ORM Lazy Load
List<Customer> customers = context.Customers.ToList();
foreach (Customer cust in context.Customers){
Console.WriteLine("Customer {0}, Account {1}", cust.Person.LastName.Trim() + ", " + cust.Person.FirstName, cust.AccountNumber);
}9.استفاده از MiniProfiler
#if DEBUG then // فعال سازی MiniProfiler #endif
10. Data Paging در بانک اطلاعاتی
11. بررسی تعداد کوئریهای صادر شده در یک صفحه و تعداد رکوردهای بازگشت داده شده توسط آنها
هیچ کامپوننتی وجود خارجی نداره که قسمت مدیریت سمت بانک اطلاعاتی رو هم خودش به تنهایی انجام بده. همین کنترلهای پیش فرض ASP.NET رو هم اگر ازشون درست استفاده کنیم، مشکلات کارآیی ندارند. مثلا: (نکته مهمش Skip.Take.ToList استفاده شده هست)
واکشی اطلاعات به صورت chunk chunk (تکه تکه) و نمایش در ListView
@(Html.Kendo.Grid(Of Models.vProject).Name("ProjectsGrid") _
.Columns(Sub(column)
With column
.Bound(Function(p) p.ProjectId).Hidden()
.Bound(Function(p) p.Supervisor).Title("ناظر")
.Bound(Function(p) p.MapNumber).Title("شماره نقشه")
.Bound(Function(p) p.MapCode).Title("کد نقشه")
.Bound(Function(p) p.NewStructureArea).Title("متراژ")
.Bound(Function(p) p.NumberOfFloors).Title("تعداد طبقات")
.Bound(Function(p) p.InsuranceName).Title("بیمه")
End With
End Sub).Pageable(Sub(p)
p.Enabled(True)
p.Info(True)
p.PageSizes(True)
p.Messages(Sub(m)
m.Display("{0} - {1} از {2} رکورد")
m.Empty("رکوردی برای نمایش وجود ندارد")
m.Of("از")
m.Page("صفحه")
m.ItemsPerPage("رکورد در هر صفحه")
m.Refresh("بروزرسانی")
End Sub)
End Sub).Selectable(Sub(s) s.Enabled(True).Mode(GridSelectionMode.Single).Type(GridSelectionType.Row)) _
.DataSource(Sub(ds) ds.Ajax.ServerOperation(True).Read("GetProjects", "Home") _
.Model(Sub(m) m.Id(Function(modelId) modelId.ProjectId)))
) <HttpPost>
Function GetProjects(<DataSourceRequest> request As DataSourceRequest) As JsonResult
Return Json(db.vProjects.ToDataSourceResult(request))
End FunctionSELECT TOP (5) [Extent1].[ProjectId] AS [ProjectId],
[Extent1].[Supervisor] AS [Supervisor],
[Extent1].[MapCode] AS [MapCode],
[Extent1].[MapNumber] AS [MapNumber],
[Extent1].[EmployerName] AS [EmployerName],
[Extent1].[InsuranceName] AS [InsuranceName],
[Extent1].[NewStructureArea] AS [NewStructureArea],
[Extent1].[NumberOfFloors] AS [NumberOfFloors]
FROM (SELECT [Extent1].[ProjectId] AS [ProjectId],
[Extent1].[Supervisor] AS [Supervisor],
[Extent1].[MapCode] AS [MapCode],
[Extent1].[MapNumber] AS [MapNumber],
[Extent1].[EmployerName] AS [EmployerName],
[Extent1].[InsuranceName] AS [InsuranceName],
[Extent1].[NewStructureArea] AS [NewStructureArea],
[Extent1].[NumberOfFloors] AS [NumberOfFloors],
row_number() OVER (ORDER BY [Extent1].[ProjectId] ASC) AS [row_number]
FROM (SELECT [vProject].[ProjectId] AS [ProjectId],
[vProject].[Supervisor] AS [Supervisor],
[vProject].[MapCode] AS [MapCode],
[vProject].[MapNumber] AS [MapNumber],
[vProject].[EmployerName] AS [EmployerName],
[vProject].[InsuranceName] AS [InsuranceName],
[vProject].[NewStructureArea] AS [NewStructureArea],
[vProject].[NumberOfFloors] AS [NumberOfFloors]
FROM [dbo].[vProject] AS [vProject]) AS [Extent1]) AS [Extent1]
WHERE [Extent1].[row_number] > 5
ORDER BY [Extent1].[ProjectId] ASC