Example #1
0
        public virtual ICollection <T> List <T>(Aggregate <T> aggregate, IQuery query)
        {
            ICollection <T> list = new List <T>();

            if (aggregate != null)
            {
                using (ConnectionType connection = GetConnection(aggregate.Schema))
                {
                    connection.Open();
                    TransactionType transaction = default(TransactionType);

                    try
                    {
                        DataSet dataSet = new DataSet(aggregate.Name);

                        DataTable rootTable = aggregate.Root.GetDataTable(aggregate.Root.Name);

                        dataSet.Tables.Add(rootTable);
                        CommandType rootSelect = GetSelectCommand(connection, transaction, aggregate.Root, query);
                        IDataReader rootReader = rootSelect.ExecuteReader();
                        while (rootReader.Read())
                        {
                            aggregate.Root.AddDataRow(rootTable, rootReader, DataConverter, null);
                        }

                        foreach (Map map in aggregate.Maps)
                        {
                            DataTable table = null;
                            if (!dataSet.Tables.Contains(map.Name))
                            {
                                table = map.Leaf.GetDataTable(map);
                                dataSet.Tables.Add(table);
                            }
                            else
                            {
                                table = dataSet.Tables[map.Name];
                            }

                            CommandType entitySelect = GetSelectCommand(connection, transaction, map, query);
                            IDataReader entityReader = entitySelect.ExecuteReader();
                            while (entityReader.Read())
                            {
                                object id = entityReader[map.Root.Identifier.Name];

                                if (id != null && id != DBNull.Value)
                                {
                                    map.Leaf.AddDataRow(table, entityReader, DataConverter, map);
                                }
                            }
                        }

                        list = aggregate.List(dataSet);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }

            return(list);
        }
Example #2
0
 public void Save <T>(Aggregate <T> aggregate, IEnumerable <T> models)
 {
     Engine.Save <T>(aggregate, models);
 }
Example #3
0
 public void Delete <T>(Aggregate <T> aggregate, IEnumerable <T> models)
 {
     Engine.Delete <T>(aggregate, models);
 }
Example #4
0
 public ICollection <T> List <T>(Aggregate <T> aggregate, IQuery query)
 {
     return(Engine.List <T>(aggregate, query));
 }