一部のプロジェクトでmyGenerationを使用しました。BusinessEntity がクエリの結果を DataTable に保持していることに気付きましたが、開発者が結果をオブジェクトのリストとして取得したい場合はどうすればよいでしょうか? これを解決するために、私は自分で使用するために次の変更を加えました。
public class BusinessEntity
{
//....
public DataTable TheDataTable
{
get
{
return _dataTable;
}
set
{
_dataTable = value;
}
}
public void PutTheRow(DataRow pRow)
{
DataRow newRow = _dataTable.NewRow();
newRow.ItemArray = pRow.ItemArray;
_dataTable.Rows.Add(newRow);
_dataRow = newRow;
//Rewind();
_dataTable.AcceptChanges();
}
.......
}
ここで、「従業員」というテーブルがあり、従業員用のクラスを生成するとします。また、次の変更を行います。
public abstract class Employee : _Employee
{
public Employee()
{
}
public List<Employee> AsList()
{
List<Employee> list = new List<Employee>();
Employee businessEntity = null;
foreach (System.Data.DataRow row in TheDataTable.Rows)
{
businessEntity = new Employee();
businessEntity.TheDataTable = TheDataTable.Clone();
businessEntity.PutTheRow(row);
list.Add(businessEntity);
}
return list;
}
}
これで、1 つのオブジェクトとデータ テーブルの結果ではなく、クエリの結果からオブジェクトのリストを取得できます。
Employee employee = new Employee();
employee.Where.ID.Operator = WhereParameter.Operand.NotIn;
employee.Where.ID.Value = "1,2,3";
employee.Query.Load();
foreach (Employee employeeLoop in employee.AsList())
{
TreeNode node = new TreeNode(employeeLoop.s_ID);
node.Tag = employeeLoop;
mMainTree.Nodes.Add(node);
}
次に、選択した従業員に次のようにアクセスできます。
Employee emp = (Employee) mMainTree.SelectedNode.Tag;
emp.Name = "WWWWW";
emp.Save();
ありがとう。より良いヒント、アイデアはありますか? 詳細については、MyGeneration フォーラムにアクセスしてください。