2 weeks back i posted my problem, I think now i know where is the problem but i do not know i will fix that.
Actually i am fetching data through entityFramework 4.1 and since my search criteria is dynamic so i have only one way to do that which i know which is
using System;
using System.Linq;
using System.Data.Entity;
using QTrac.Models;
using System.Transactions;
namespace QTrac.DAL
{
public class AssetManagementSearchRepository : RepositoryBase<AssetManagementSearch>, IAssetManagementSearchRepository
{
public AssetManagementSearchRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { }
#region IAssetManagementSearchResponseRepository Members
public IQueryable<AssetManagementSearch> GetSearchResult(SearchRequest request)
{
IQueryable<AssetManagementSearch> query = DbSet;
using (var context = new QTracContext()) {
using (var tx = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted })) {
//try {
if (!String.IsNullOrEmpty(request.FileCode)) {
query = query.Where(d => d.FileCode.StartsWith(request.FileCode));
}
if (!String.IsNullOrEmpty(request.SerialNo)) {
query = query.Where(d => d.SerialNo.StartsWith(request.SerialNo));
}
if (!String.IsNullOrEmpty(request.TopLevelEquipment)) {
query = query.Where(d => d.ParentToolSet.StartsWith(request.TopLevelEquipment));
}
if (!String.IsNullOrEmpty(request.EquipmentState)) {
query = query.Where(d => d.EqpState.StartsWith(request.EquipmentState));
}
if (!String.IsNullOrEmpty(request.EquipmentStatus)) {
query = query.Where(d => d.EqpStatus.StartsWith(request.EquipmentStatus));
}
if (!String.IsNullOrEmpty(request.DFP)) {
query = query.Where(d => d.DFP.StartsWith(request.DFP));
}
if (request.Active.HasValue) {
query = query.Where(d => d.IsActive == request.Active);
}
if (!String.IsNullOrEmpty(request.OwnerSite)) {
query = query.Where(d => d.OwnerSite.StartsWith(request.OwnerSite));
}
if (!String.IsNullOrEmpty(request.ControlSite)) {
query = query.Where(d => d.ControlSite.StartsWith(request.ControlSite));
}
if (!String.IsNullOrEmpty(request.Location)) {
query = query.Where(d => d.Location.StartsWith(request.Location));
}
if (!String.IsNullOrEmpty(request.StampedFC)) {
query = query.Where(d => d.STAMPEDFC.StartsWith(request.StampedFC));
}
if (!String.IsNullOrEmpty(request.StampedSN)) {
query = query.Where(d => d.STAMPEDSN.StartsWith(request.StampedSN));
}
if (!String.IsNullOrEmpty(request.CustomsStatus)) {
query = query.Where(d => d.CustomsStatus.StartsWith(request.CustomsStatus));
}
if (!String.IsNullOrEmpty(request.ImportType)) {
query = query.Where(d => d.ImportType.StartsWith(request.ImportType));
}
if (!String.IsNullOrEmpty(request.ClientBasket)) {
query = query.Where(d => request.ClientBasket.Contains(d.ClientBasket));
}
if (!String.IsNullOrEmpty(request.ImportClient)) {
query = query.Where(d => request.ImportClient.Contains(d.ImportClient));
}
if (!String.IsNullOrEmpty(request.AssignedClient)) {
query = query.Where(d => d.AssignedClient.StartsWith(request.AssignedClient));
}
if (!String.IsNullOrEmpty(request.FileCodesByToolFamily)) {
query = query.Where(d => request.FileCodesByToolFamily.Contains(d.FileCode));
}
return query.AsNoTracking();
//}
//catch(Exception e) {
// throw e.InnerException;
//}
//finally {
// //Context.Dispose();
//}
}
}
}
#endregion
}
}
usually it works fine, One case it does not work when i download my code from source control, 2nd is yesterday i was working on same solution but different page i added many views and strored procedures in .edmx file and when i tested this search screen it was not working it was returning 500 error everytime, 500 error i traped from mvc telerik grid error event.
If i change this code to without dynamic like
return Get(filter: p => p.ACTIVE == active, orderBy: o => o.OrderBy(p => p.NAME), tracking: false);
braveboy76
Member
103 Points
97 Posts
500 error post and my investigation
May 09, 2012 02:19 PM|LINK
2 weeks back i posted my problem, I think now i know where is the problem but i do not know i will fix that.
Actually i am fetching data through entityFramework 4.1 and since my search criteria is dynamic so i have only one way to do that which i know which is
using System; using System.Linq; using System.Data.Entity; using QTrac.Models; using System.Transactions; namespace QTrac.DAL { public class AssetManagementSearchRepository : RepositoryBase<AssetManagementSearch>, IAssetManagementSearchRepository { public AssetManagementSearchRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { } #region IAssetManagementSearchResponseRepository Members public IQueryable<AssetManagementSearch> GetSearchResult(SearchRequest request) { IQueryable<AssetManagementSearch> query = DbSet; using (var context = new QTracContext()) { using (var tx = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted })) { //try { if (!String.IsNullOrEmpty(request.FileCode)) { query = query.Where(d => d.FileCode.StartsWith(request.FileCode)); } if (!String.IsNullOrEmpty(request.SerialNo)) { query = query.Where(d => d.SerialNo.StartsWith(request.SerialNo)); } if (!String.IsNullOrEmpty(request.TopLevelEquipment)) { query = query.Where(d => d.ParentToolSet.StartsWith(request.TopLevelEquipment)); } if (!String.IsNullOrEmpty(request.EquipmentState)) { query = query.Where(d => d.EqpState.StartsWith(request.EquipmentState)); } if (!String.IsNullOrEmpty(request.EquipmentStatus)) { query = query.Where(d => d.EqpStatus.StartsWith(request.EquipmentStatus)); } if (!String.IsNullOrEmpty(request.DFP)) { query = query.Where(d => d.DFP.StartsWith(request.DFP)); } if (request.Active.HasValue) { query = query.Where(d => d.IsActive == request.Active); } if (!String.IsNullOrEmpty(request.OwnerSite)) { query = query.Where(d => d.OwnerSite.StartsWith(request.OwnerSite)); } if (!String.IsNullOrEmpty(request.ControlSite)) { query = query.Where(d => d.ControlSite.StartsWith(request.ControlSite)); } if (!String.IsNullOrEmpty(request.Location)) { query = query.Where(d => d.Location.StartsWith(request.Location)); } if (!String.IsNullOrEmpty(request.StampedFC)) { query = query.Where(d => d.STAMPEDFC.StartsWith(request.StampedFC)); } if (!String.IsNullOrEmpty(request.StampedSN)) { query = query.Where(d => d.STAMPEDSN.StartsWith(request.StampedSN)); } if (!String.IsNullOrEmpty(request.CustomsStatus)) { query = query.Where(d => d.CustomsStatus.StartsWith(request.CustomsStatus)); } if (!String.IsNullOrEmpty(request.ImportType)) { query = query.Where(d => d.ImportType.StartsWith(request.ImportType)); } if (!String.IsNullOrEmpty(request.ClientBasket)) { query = query.Where(d => request.ClientBasket.Contains(d.ClientBasket)); } if (!String.IsNullOrEmpty(request.ImportClient)) { query = query.Where(d => request.ImportClient.Contains(d.ImportClient)); } if (!String.IsNullOrEmpty(request.AssignedClient)) { query = query.Where(d => d.AssignedClient.StartsWith(request.AssignedClient)); } if (!String.IsNullOrEmpty(request.FileCodesByToolFamily)) { query = query.Where(d => request.FileCodesByToolFamily.Contains(d.FileCode)); } return query.AsNoTracking(); //} //catch(Exception e) { // throw e.InnerException; //} //finally { // //Context.Dispose(); //} } } } #endregion } }usually it works fine, One case it does not work when i download my code from source control, 2nd is yesterday i was working on same solution but different page i added many views and strored procedures in .edmx file and when i tested this search screen it was not working it was returning 500 error everytime, 500 error i traped from mvc telerik grid error event.
If i change this code to without dynamic like