Как получить список объектов из BusinessEntity, используя myGeneration?
Я использовал 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;
}
}
Теперь я могу получить список объектов, из результата запроса, вместо одного объекта и результата в таблице данных:
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.
1 ответ
Зачем вам создавать метод с именем AsList(), который возвращает только один элемент? Вы могли бы просто создать универсальный метод расширения, подобный этому (созданный из верхней части моей головы..):
public static List<T> AsList(this T item)
{
return new List<T>() { item };
}
Нет смысла перебирать список сотрудников одного из них, чтобы добавить его в TreeNode.