Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public T[] Select<T>() {
- if (AttributeExtensions.GetAttribute(typeof(T), out TableAttribute tableAttribute)) {
- //SELECT * FROM * WHERE
- MySqlDataReader reader = null;
- string query = $"SELECT * FROM {tableAttribute.Name};";
- lock (_db) {
- using MySqlCommand command = new MySqlCommand() {
- Connection = _db,
- CommandText = query
- };
- reader = command.ExecuteReader();
- }
- if(reader.HasRows) {
- List<T> elements = new List<T>();
- while (reader.Read()) {
- T row = (T) Activator.CreateInstance(typeof(T));
- typeof(T).GetProperties().ToList().ForEach(property => {
- try {
- if (AttributeExtensions.GetAttribute(typeof(T), out ColumnAttribute columnAttribute)) {
- int colunmIndex = reader.GetOrdinal(columnAttribute.Name);
- property.SetValue(row, reader.GetValue(colunmIndex));
- } else {
- int colunmIndex = reader.GetOrdinal(property.Name);
- property.SetValue(row, reader.GetValue(colunmIndex));
- }
- } catch {
- property.SetValue(row, default);
- }
- });
- elements.Add(row);
- }
- return elements.ToArray();
- } else {
- return Array.Empty<T>();
- }
- } else {
- throw new Exception("There isn't a table - missing TableAttribute");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement