을 배치 한 후 참조 키를로드 3.5 여기엔티티 프레임 워크 - 나는 ASP.Net/웹폼/법인 모델/프레임 워크를 사용하고 엔터티 개체 컨텍스트
양식이> BLL은> DAL은
(개체 모델을 사용) 내 프로젝트의 간단한 구조입니다 여기내가이
public class MyBLL
{
public User GetUserByID(int userId)
{
try
{
using (MyDAL objMyDAL = new MyDAL())
{
return objMyDAL.GetUserByID(userId);
}
}
catch
{
throw;
}
}
}
처럼 내 BLL에서 DAL의 함수를 호출 내 DAL의 조각
public class MyDAL : IDisposable
{
private MyEntities db;
public BaseDAL()
{
db = new MyEntities();
}
public User GetUserByID(int userId)
{
try
{
IQueryable<User> objUser = null;
objUser = from res in db.Users
where res.UserId == userId
select res;
return objUser.FirstOrDefault();
}
catch
{
throw;
}
}
public void Dispose()
{
db.Dispose();
}
}
입니다
블록을 사용하여 을 통해 DAL을 호출하므로 BLL이 User 개체를 반환 한 직후 MyDAL의 Dispose 이벤트가 실행됩니다. 따라서이 시점에서 ObjectContext 인스턴스가 삭제됩니다. 내 웹 양식에서 이제
, 나는 사용자 테이블에 user_Group 테이블의 외래 키 사용자 정보와 그룹 세부 사항을 얻기 위해이 같은이 함수를 호출하고protected void Page_Load(object sender, EventArgs e)
{
MyBLL objMyBll = new MyBLL();
User objUser = objMyBll.GetUserByID(123);
objUser.User_GroupReference.Load(); // ERROR LINE
int groupId = objUser.User_Group.Group_Id;
}
송시 라인 objUser.User_GroupReference.Load();
I에 온다 이 예외가 발생합니다.
ObjectContext 인스턴스가 삭제되었으며 연결이 필요한 작업의 경우 더 이상 을 사용할 수 없습니다.
해결 방법? 내 DAL의 dispose 메서드에서 db.Dispose();
을 수행하지 않으면 정상적으로 작동하며 예외가 발생하지 않습니다. 하지만 db 객체를 거기에 처리하지 않으면 &을 어디에 처리해야합니까? 배치 된 객체 컨텍스트 이후에 참조 키에 액세스하는 방법은 무엇입니까?
답장을 보내 주셔서 감사합니다. @Ladislav Mrnka – Riz