Tôi đang cố điền vào một GridView
Entity Frameworkm nhưng lần nào tôi cũng gặp lỗi sau:
"Trình truy cập thuộc tính 'LoanProduct' trên đối tượng 'COSIS_DAL.MemberLoan' đã đưa ra ngoại lệ sau: Thể hiện ObjectContext đã bị xử lý và không còn có thể được sử dụng cho các hoạt động yêu cầu kết nối."
Mã của tôi là:
public List<MemberLoan> GetAllMembersForLoan(string keyword)
{
using (CosisEntities db = new CosisEntities())
{
IQueryable<MemberLoan> query = db.MemberLoans.OrderByDescending(m => m.LoanDate);
if (!string.IsNullOrEmpty(keyword))
{
keyword = keyword.ToLower();
query = query.Where(m =>
m.LoanProviderCode.Contains(keyword)
|| m.MemNo.Contains(keyword)
|| (!string.IsNullOrEmpty(m.LoanProduct.LoanProductName) && m.LoanProduct.LoanProductName.ToLower().Contains(keyword))
|| m.Membership.MemName.Contains(keyword)
|| m.GeneralMasterInformation.Description.Contains(keyword)
);
}
return query.ToList();
}
}
protected void btnSearch_Click(object sender, ImageClickEventArgs e)
{
string keyword = txtKeyword.Text.ToLower();
LoanController c = new LoanController();
List<COSIS_DAL.MemberLoan> list = new List<COSIS_DAL.MemberLoan>();
list = c.GetAllMembersForLoan(keyword);
if (list.Count <= 0)
{
lblMsg.Text = "No Records Found";
GridView1.DataSourceID = null;
GridView1.DataSource = null;
GridView1.DataBind();
}
else
{
lblMsg.Text = "";
GridView1.DataSourceID = null;
GridView1.DataSource = list;
GridView1.DataBind();
}
}
Lỗi đang đề cập đến LoanProductName
cột của Gridview
. Đã đề cập: Tôi đang sử dụng C #, ASP.net, SQL-Server 2008 làm DB cuối.
Tôi còn khá mới đối với Entity Framework. Tôi không thể hiểu tại sao tôi lại nhận được lỗi này. Có ai có thể giúp tôi không?
db.MemberLoans.Include("LoanProduct").OrderByDescending()
kiểm tra cú pháp vì tôi không có VS trước mặt.
db.MemberLoans.Include("LoanProduct").Include("SomeOtherTable)
. Đánh dấu vào câu trả lời bằng @Tragedian và @lazyberezovsky
query.Include("SomeOtherTable")