/// <summary> /// Заполняет сущность данными из базы данных /// </summary> /// <typeparam name="TEntity">Сущность</typeparam> /// <returns>Возвращает коллекцию элементов из TEnity</returns> public async Task <Table <TEntity> > FillEntityAsync <TEntity>() where TEntity : class, new() { var attrManager = new AttributeManager <TEntity>(typeof(TEntity)); //получаем имя сущности string tableName = attrManager.GetClassAttributeValue <TableAttribute, String>(a => (a as TableAttribute).Name); // var columns = attrManager.GetPropertyAttributeValues<ColumnAttribute, string>(a => (a as ColumnAttribute).Name).ToList(); //колллекция для хранения сущностей List <TEntity> entities = new List <TEntity>(); //создаем подключение к базе данных using (_sqlConnection = new SqlConnection(_connectionString)) { //открываем подключение await _sqlConnection.OpenAsync(); //создаем объект для хранения запроса using (SqlCommand cmd = new SqlCommand()) { //занесение в свойство CommandText текст T-SQL запроса cmd.CommandText = $"select * from {tableName}"; //занесение в свойство Connection подключение к базеданных cmd.Connection = _sqlConnection; //создание объекта для чтения using (SqlDataReader reader = await cmd.ExecuteReaderAsync()) { //чтении данных из бд while (await reader.ReadAsync()) { //создание сущности TEntity entity = new TEntity(); //заполнение свойст сущности, которые помеченны соответствующими аттрибутами foreach (PropertyInfo prop in typeof(TEntity).GetProperties()) { //получение имяни столбца string columnName = (prop.GetCustomAttribute(typeof(ColumnAttribute)) as ColumnAttribute).Name; //заполнение свойства сущности prop.SetValue(entity, reader[columnName]); } //добавление в коллекцию сущностей entities.Add(entity); } } } } return(new Table <TEntity>(entities)); }