public T SelectOne <T>(SqliteConnection connection, string propertyName, Object value, bool assertEmpty = true, bool assertMultiple = true) { using (var queryCmd = connection.CreateCommand()) { if (value is string || value is Enum) { queryCmd.CommandText = $"select * from {propertiesAndCommands.tableName} where {propertyName} = '{value.ToString()}'"; } else { queryCmd.CommandText = $"select * from {propertiesAndCommands.tableName} where {propertyName} = {value}"; } using (var data = queryCmd.ExecuteReader()) { var p = new DataRecordHelper <T>(propertiesAndCommands, data); if (data.Read()) { var obj = p.GetObject(); if (data.Read() && assertMultiple) { throw new Exception( $"{propertiesAndCommands.tableName} has more than one entry where {propertyName} equals {value}"); } return(obj); } else { if (assertEmpty) { throw new Exception( $"{propertiesAndCommands.tableName} does not contain entry where {propertyName} equals {value}"); } return(default(T)); } } } }
public T SelectDataByPrimaryKey <T>(SqliteConnection connection, Object primaryKey) { string selectCommand = $"{propertiesAndCommands.SelectCommandByPrimaryKey(primaryKey)}"; using (var queryCmd = connection.CreateCommand()) { queryCmd.CommandText = selectCommand; using (var data = queryCmd.ExecuteReader()) { var p = new DataRecordHelper <T>(propertiesAndCommands, data); if (data.Read()) { var z = new DataRecordHelper <T>(propertiesAndCommands, data); return(z.GetObject()); } } } return(default(T)); }