#pragma warning disable 1591 using System; using System.Collections.Generic; using System.Runtime.Serialization; using System.Threading.Tasks; using MySqlConnector; using de.hottis.genericdatabaseapiservice.Models; namespace de.hottis.genericdatabaseapiservice.Services { public interface IDbService { Task> ReadBySelect(string selectStatement, TIN input); } public class DbService : IDbService { async public Task> ReadBySelect(string selectStatement, TIN input) { var itemList = new List(); using (var conn = new MySqlConnection("Server=172.16.10.18;User ID=apiservicetestdb;Password=geheim123;Database=apiservicetestdb")) { await conn.OpenAsync(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = selectStatement; if (input != null){ foreach (var propertyInfo in typeof(TIN).GetProperties()) { Console.WriteLine("Input Property name: {0} {1} ", propertyInfo.Name, propertyInfo.PropertyType); var attributes = propertyInfo.GetCustomAttributes(typeof(DataMemberAttribute), true); var dma = (DataMemberAttribute)attributes[0]; Console.WriteLine("Input DataMember name: {0} {1} ", dma.Name, dma.TypeId); var value = propertyInfo.GetValue(input); Console.WriteLine("Input Value: {0}", value); cmd.Parameters.AddWithValue(dma.Name, propertyInfo.GetValue(input)); } } else { Console.WriteLine("no input data"); } using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var item = Activator.CreateInstance(); foreach (var propertyInfo in typeof(TOUT).GetProperties()) { Console.WriteLine("Output Property name: {0} {1} ", propertyInfo.Name, propertyInfo.PropertyType); var attributes = propertyInfo.GetCustomAttributes(typeof(DataMemberAttribute), true); var dma = (DataMemberAttribute)attributes[0]; Console.WriteLine("Output DataMember name: {0} {1} ", dma.Name, dma.TypeId); if (propertyInfo.PropertyType == typeof(System.String)) { propertyInfo.SetValue(item, reader.GetString(dma.Name)); Console.WriteLine("Output Value:{0}", reader.GetString(dma.Name)); } else if (propertyInfo.PropertyType == typeof(System.Int32)) { propertyInfo.SetValue(item, reader.GetInt32(dma.Name)); Console.WriteLine("Output Value:{0}", reader.GetInt32(dma.Name)); } } itemList.Add(item); } } } } return itemList; } } } #pragma warning restore 1591