を配置した後、リファレンスキーをロード3.5ここEntity Frameworkは - 私はASP.Net/Webフォーム/エンティティモデル/フレームワークを使用していますエンティティオブジェクトのコンテキスト
フォームは> 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();
}
}
である私は、この
public class MyBLL
{
public User GetUserByID(int userId)
{
try
{
using (MyDAL objMyDAL = new MyDAL())
{
return objMyDAL.GetUserByID(userId);
}
}
catch
{
throw;
}
}
}
のように私のBLLからDALの機能を呼び出します
ブロックを使用してDALをと呼びます。したがって、BLLがUserオブジェクトを返すとすぐにMyDALのDisposeイベントが発生します。この時点でObjectContextインスタンスは破棄されます。 ODEは私がラインobjUser.User_GroupReference.Load();
になると
は今私のWebフォームでは、私が
Userテーブルに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;
}
をUSER_GROUP表の外部キーであるユーザー情報とグループの詳細を取得するには、このように、この関数を呼び出していますこの例外が発生する
ObjectContextインスタンスが破棄され、接続が必要な操作の場合は、 を使用できなくなりました。
解決方法DALのdisposeメソッドでdb.Dispose();
を実行しないと、正常に動作し、例外が発生しません。しかし、dbオブジェクトをそこに配置しないと、&はどこに配置すればいいですか? オブジェクトコンテキストを破棄した後に参照キーにアクセスする方法は?
返信いただきありがとうございます@ラディスラフMrnka – Riz