示例#1
0
        // Make into nice util function.

        private void FetchAndFillObject(SqlCommand command, ORMEntity entity)
        {
            using var reader = command.ExecuteReader();
            while (reader.Read())
            {
                for (int i = 0; i < reader.VisibleFieldCount; i++)
                {
                    if (i == entity.TableScheme.Count) // 6? check if 6 for user and if this is a good generic option?
                    // what if certain fields are not available? does it break?
                    {
                        break;
                    }

                    var propertyName  = reader.GetName(i);
                    var propertyValue = reader.GetValue(i);

                    if (entity[propertyName].GetType().IsAssignableFrom(typeof(ORMEntity)))
                    {
                        entity[propertyName] = Activator.CreateInstance(entity[propertyName].GetType());
                        (entity[propertyName] as ORMEntity)[reader.GetName(6)] = reader.GetValue(6);
                        (entity[propertyName] as ORMEntity)[reader.GetName(7)] = reader.GetValue(7);
                    }
                    else
                    {
                        entity[propertyName] = propertyValue;
                    }
                }
            }
        }
示例#2
0
    public static (object value, string sourceColumn) SqlValue(this ORMEntity entity, string columnName)
    {
        object value;

        switch (entity.GetPropertyInfo(columnName).PropertyType)
        {
        case Type dateTime when dateTime == typeof(DateTime?):
            if (((DateTime?)entity[columnName]).HasValue)
            {
                value = ((DateTime?)entity[columnName]).Value.ToSqlString();
            }
            else
            {
                return(DBNull.Value, columnName);
            }
            break;

        case Type dateTime when dateTime == typeof(DateTime):
            value = ((DateTime)entity[columnName]).ToSqlString();
            break;

        default:
            value = entity[columnName];
            break;
        }

        if (value == null)
        {
            return(DBNull.Value, columnName);
        }
        else
        {
            return(value, columnName);
        }
    }
示例#3
0
    public static bool IsForeignKeyOfType(this ORMEntity entity, string propertyName, Type type)
    {
        var propertyInfo = entity.GetPropertyInfo(propertyName);

        var fkAttribute = propertyInfo.GetCustomAttributes(typeof(ORMForeignKeyAttribute), false).FirstOrDefault() as ORMForeignKeyAttribute;

        return(type == fkAttribute.Relation);
    }
示例#4
0
 public static PropertyInfo GetPropertyInfo(this ORMEntity entity, string propertyName)
 {
     return(entity.GetType().GetProperty(propertyName, entity.PublicIgnoreCaseFlags)
            ?? entity.GetType().GetProperties().FirstOrDefault(x => (x.GetCustomAttributes(typeof(ORMColumnAttribute), false).FirstOrDefault() as ORMColumnAttribute)?.ColumnName == propertyName));
 }