This question is locked. New answers and comments are not allowed.
Hello Admin,
i am using Reverse Mapping With ORM and it creates no issue while we develop application. But now we make our site ready for production but found some Performance issue. All Radgrid takes so much time while we do simple operations like inserting,updating and Deleting data from grid.
we had another site which using client side binding using web-service.Is there is any way to use this kind of approach in this also as it gives us a better performance.
Or is there is any other way to remove this performance issue.
Please suggest us ASAP.
Thanks,
Mandeep Singh
i am using Reverse Mapping With ORM and it creates no issue while we develop application. But now we make our site ready for production but found some Performance issue. All Radgrid takes so much time while we do simple operations like inserting,updating and Deleting data from grid.
we had another site which using client side binding using web-service.Is there is any way to use this kind of approach in this also as it gives us a better performance.
Or is there is any other way to remove this performance issue.
Please suggest us ASAP.
Thanks,
Mandeep Singh
4 Answers, 1 is accepted
0
Hi Mandeep Singh,
Petar
the Telerik team
Unfortunately the information you have provided us is by far not enough to identify possible problems in your application. I believe the best starting point for you would be to identify the possible bottlenecks in your application and confirm if they are indeed connected with OpenAccess or perhaps the problems lies elsewhere.
Depending on your project it might be possible to use wcf services but that is entirely depending on your project and requirements.
Petar
the Telerik team
0
Mandy
Top achievements
Rank 2
answered on 23 May 2011, 11:53 AM
Hello Admin,
Thanks for the reply, i had used the client side binding using ORM with normal WebService , but i am keep getting the error when i trying to sort the grid , the grid bind successfully and paging also works fine but the sorting gives me error of object reference not set to instance of an object. i tried to debug and found that the PropertyDescriptor _descriptor = null; is always null .i had used reverse mapping of ORM and maps the two different tables. below is my code ..
[WebMethod(EnableSession = true)]
public List<ProjectUserMapping> GetData(int startRowIndex, int maximumRows, string SortField, GridSortOrder SortOrder)
{
List<GridSortExpression> sortExpression = new List<GridSortExpression>();
if (SortField != "")
{
GridSortExpression item = new GridSortExpression();
item.FieldName = SortField.ToString();
item.SortOrder = SortOrder;
sortExpression.Add(item);
}
IObjectScope scope = ObjectScopeProvider1.GetNewObjectScope();
//var query = scope.Extent<ProjectUserMapping>().ToList();
var result = from o in scope.Extent<ProjectUserMapping>()
where o.UserId.Equals(Convert.ToInt32(Session["UserId"]))
select o;
var query = result.ToList();
List<ProjectUserMapping> list = new List<ProjectUserMapping>();
list = query;
///Getting Paging and sorting
list = GetProjectsPagingAndSorting(list, startRowIndex, maximumRows, sortExpression);
return list;
}
#region Sorting Paging
public class GridGenericSorter<T> : IComparer<T>
{
GridSortExpression _expression = null;
PropertyDescriptor _descriptor = null;
public GridGenericSorter(GridSortExpression expression)
{
_descriptor = TypeDescriptor.GetProperties(GetType().GetGenericArguments()[0]).Find(expression.FieldName, true);
_expression = expression;
}
public int Compare(T o1, T o2)
{
IComparable comparable1 = (IComparable)_descriptor.GetValue(o1);
IComparable comparable2 = (IComparable)_descriptor.GetValue(o2);
if (_expression.SortOrder == GridSortOrder.Ascending)
{
return comparable1.CompareTo(comparable2);
}
else
{
return comparable2.CompareTo(comparable1);
}
}
}
/// <summary>
/// Getting Project paging and Sorting
/// </summary>
/// <param name="data"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <param name="sortExpression"></param>
/// <returns></returns>
public static List<ProjectUserMapping> GetProjectsPagingAndSorting(List<ProjectUserMapping> data, int startRowIndex, int maximumRows, List<GridSortExpression> sortExpression)
{
if (sortExpression.Count > 0)
{
foreach (GridSortExpression expression in sortExpression)
{
data.Sort(new GridGenericSorter<ProjectUserMapping>(expression));
}
}
List<ProjectUserMapping> list = new List<ProjectUserMapping>();
startRowIndex = startRowIndex >= data.Count ? 0 : startRowIndex;
decimal Count = data.Count - startRowIndex;
for (int i = 0; i < Math.Min(maximumRows, Count); i++)
{
list.Add(data[i + startRowIndex]);
}
return list;
}
#endregion
Please post the reply asap....
Thanks,
Mandeep Singh
Thanks for the reply, i had used the client side binding using ORM with normal WebService , but i am keep getting the error when i trying to sort the grid , the grid bind successfully and paging also works fine but the sorting gives me error of object reference not set to instance of an object. i tried to debug and found that the PropertyDescriptor _descriptor = null; is always null .i had used reverse mapping of ORM and maps the two different tables. below is my code ..
[WebMethod(EnableSession = true)]
public List<ProjectUserMapping> GetData(int startRowIndex, int maximumRows, string SortField, GridSortOrder SortOrder)
{
List<GridSortExpression> sortExpression = new List<GridSortExpression>();
if (SortField != "")
{
GridSortExpression item = new GridSortExpression();
item.FieldName = SortField.ToString();
item.SortOrder = SortOrder;
sortExpression.Add(item);
}
IObjectScope scope = ObjectScopeProvider1.GetNewObjectScope();
//var query = scope.Extent<ProjectUserMapping>().ToList();
var result = from o in scope.Extent<ProjectUserMapping>()
where o.UserId.Equals(Convert.ToInt32(Session["UserId"]))
select o;
var query = result.ToList();
List<ProjectUserMapping> list = new List<ProjectUserMapping>();
list = query;
///Getting Paging and sorting
list = GetProjectsPagingAndSorting(list, startRowIndex, maximumRows, sortExpression);
return list;
}
#region Sorting Paging
public class GridGenericSorter<T> : IComparer<T>
{
GridSortExpression _expression = null;
PropertyDescriptor _descriptor = null;
public GridGenericSorter(GridSortExpression expression)
{
_descriptor = TypeDescriptor.GetProperties(GetType().GetGenericArguments()[0]).Find(expression.FieldName, true);
_expression = expression;
}
public int Compare(T o1, T o2)
{
IComparable comparable1 = (IComparable)_descriptor.GetValue(o1);
IComparable comparable2 = (IComparable)_descriptor.GetValue(o2);
if (_expression.SortOrder == GridSortOrder.Ascending)
{
return comparable1.CompareTo(comparable2);
}
else
{
return comparable2.CompareTo(comparable1);
}
}
}
/// <summary>
/// Getting Project paging and Sorting
/// </summary>
/// <param name="data"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <param name="sortExpression"></param>
/// <returns></returns>
public static List<ProjectUserMapping> GetProjectsPagingAndSorting(List<ProjectUserMapping> data, int startRowIndex, int maximumRows, List<GridSortExpression> sortExpression)
{
if (sortExpression.Count > 0)
{
foreach (GridSortExpression expression in sortExpression)
{
data.Sort(new GridGenericSorter<ProjectUserMapping>(expression));
}
}
List<ProjectUserMapping> list = new List<ProjectUserMapping>();
startRowIndex = startRowIndex >= data.Count ? 0 : startRowIndex;
decimal Count = data.Count - startRowIndex;
for (int i = 0; i < Math.Min(maximumRows, Count); i++)
{
list.Add(data[i + startRowIndex]);
}
return list;
}
#endregion
Please post the reply asap....
Thanks,
Mandeep Singh
0
Mandy
Top achievements
Rank 2
answered on 23 May 2011, 03:49 PM
Hi,
Anyone who can help me on this topic... ASAP.
Thanks in Advance,,,
Mandeep Singh
Anyone who can help me on this topic... ASAP.
Thanks in Advance,,,
Mandeep Singh
0
Accepted
Hello Mandeep,
We are unable to identify the exact cause of this issue from the source code you provided. However, the exception you are getting, or, more accurately, TypeDescriptor.GetProperties() returning null, may indicate that the type you have specified in your generic parameter (ProjectUserMapping in your case) does not have a property with a name specified by the FieldName value of the GridSortExpression. You may want to check whether the SortExpression instance passed in the constructor to the GridGenericSorter<T> specifies a FieldName that corresponds to a public property of type T.
Veli
the Telerik team
We are unable to identify the exact cause of this issue from the source code you provided. However, the exception you are getting, or, more accurately, TypeDescriptor.GetProperties() returning null, may indicate that the type you have specified in your generic parameter (ProjectUserMapping in your case) does not have a property with a name specified by the FieldName value of the GridSortExpression. You may want to check whether the SortExpression instance passed in the constructor to the GridGenericSorter<T> specifies a FieldName that corresponds to a public property of type T.
Veli
the Telerik team
Consider using RadControls for ASP.NET AJAX (built on top of the ASP.NET AJAX framework) as a replacement for the Telerik ASP.NET Classic controls, See the product support lifecycle here.