私はEntity Frameworkを使用しており、人々のセットを調べるループを持っています.foreachループを使用すると、各人の住所のクエリが作成されます。各アドレス クエリが作成されると、ツリービューのノードに追加され、後で使用できます (子ノードにデータを入力するため)。
IQueryable<Person> pQuery = (IQueryable<Person>)myContext.People; //get a list of people
//go through and get the set of addresses for each person
foreach (var p in pQuery)
{
var addressQuery = from a in myContext.Addresses
from al in a.Address_Links
where al.P_ID == p.P_ID
orderby a.A_POST_CODE
select a;
//add the query to a TreeView node (use the tag to store it)
TreeNode newNode = new TreeNode();
newNode.Tag = addressQuery;
}
さて、アプリの実行時に私が見つけた問題は、すべてのクエリが作成された最後のクエリ、つまりループの最後の反復であることです。これは、ループの最初の繰り返しで addressQuery が作成され、その後の各クエリで上書きされるようなものです。この結果、ツリー ノード内のすべてのアドレス クエリが、最後に作成されたクエリへの参照であるようなものになります (?)。
次のように、静的クラスを使用してアドレスクエリを生成し、それを各 TreeNode に渡すことで問題を解決できることをさらに調査します。
public static class Queries
{
public static IQueryable<Address> AddressesForPerson(GenesisEntities myContext, int key)
{
var query = from a in myContext.Addresses
from al in a.Address_Links
where al.P_ID == key
orderby a.A_POST_CODE
select a;
return query;
}
}
私が持っている質問は、私がこの行動に困惑していることです. 静的クエリ クラスが役立つのはなぜですか? 誰が私に何が起こっているのか説明できますか?
混乱ドットコム!