私はEntityFrameworkを使用してASP.NETC#に取り組んできましたが、特定の重要な点について非常に助けてくれる人もいます。
よくわからなかった点も1つあります。EFからデータを取得するときに、オブジェクトとそのサブオブジェクト(外部キー関係テーブルデータ)を使用することになっているのではないでしょうか。
これが私のデータベース設計です(これは以前に回答した質問にも表示されていました)
私のコードでは、次のようなメンバーエンティティを取得します。
//In some aspx.cs file
var Mem = new MemberManager().GetById(2);
//In MemberManager class
public Member GetById(long id)
{
using(var Context = new NoxonEntities())
{
return Context.Member.First(c => c.Id == id);
}
}
私がこれをするとき:
var Mem = new MemberManager().GetById(2);
var Lang = Mem.Language;
//I get
//Error: 'Mem.Language' threw an exception of type 'System.ObjectDisposedException'
この例外を取り除くために、私はこれを行う必要がありました:
public Member GetById(long id)
{
using(var Context = new NoxonEntities())
{
var Result = Context.Member.First(c => c.Id == id);
//Getting the Language Entity
Result.Language = Context.Language.First(c => c.Id == Result.LanguageId);
return Result;
}
}
FULLエンティティを作成するには、SELECTを実行する必要がありますか?言語テーブルに関連する別のテーブルがある場合はどうなりますか?機能テーブルとしましょう。私はこれを行う必要があります:
public Member GetById(long id)
{
using(var Context = new NoxonEntities())
{
var Result = Context.Member.First(c => c.Id == id);
//Getting the Language Entity
Result.Language = Context.Language.First(c => c.Id == Result.LanguageId);
Result.Language.Feature = Context.Language.Feature.First(c => c.Id == Result.FeatureId);
return Result;
}
}
これは非常に長くなる可能性があり、私はかなり確信しています(少なくとも私は本当に願っています)私は何かについて間違っていますが、選択後にオブジェクトとそのサブオブジェクトを使用できない場合、EFを持つ目的は何ですか?using(var Context = new NoxonEntities())
ブロックのサイトでサブオブジェクトのみを使用できますか?
ありがとうございました、