EF4.1CTP5とSQLServer2008を使用しています。再通貨の問題を解決する方法を理解する必要があります。次の2つのクラスがあります。
public class Nation
{
public int ID {get; set;}
public string name {get;set;}
public List<NationAlly> NationAllies {get;set;}
}
public class NationAlly
{
public int ID {get; set;}
public int level {get;set;}
public Nation Owner {get; set;}
public Nation toNation {get;set;}
}
エンティティは、2つのテーブル(NationsとNationAllies)を使用してデータベースにマップされます。その上、2つの関係があります。1)NationAllies.OwnerIDからNation.IDへ2)NationAllies.ToNationIDからNation.IDへ
データベースからNationタイプのオブジェクトを取得しようとすると、DbContextクラスNationDBにアクセスします。
Nation selectedNation = ((nationDB.Nations.Include("NationAllies")).Where(m => m.name == "France")).FirstOrDefault();
問題は、NationAlliesのリストを持つselectedNationオブジェクトを取得することですが、リスト内のすべてのNationAllyにはフィールドtoNation=nullがあります。まず、フィールドtoNationにデータベースから正しい情報を取得してもらいたいと思います。どうすればよいですか?
そしてもちろん、toNationは他のNationAlliesと接続され、他のNationAlliesは他のNationを持ちます。どうすれば再帰マップを作成できますか?私の考えは、特定の方法でデータベースにクエリを実行することにより、特定のレベルまでマップをナビゲートすることです。そうすることで、優れた速度性能を実現するための最良のアプローチは何でしょうか?