public PocoData ForObject(object o, string primaryKeyName) { var t = o.GetType(); #if !POCO_NO_DYNAMIC if (t == typeof(System.Dynamic.ExpandoObject) || t == typeof(PocoExpando)) { var pd = new PocoData(); pd.TableInfo = new TableInfo(); pd.Columns = new Dictionary<string, PocoColumn>(StringComparer.OrdinalIgnoreCase); pd.Columns.Add(primaryKeyName, new ExpandoColumn() {ColumnName = primaryKeyName}); pd.TableInfo.PrimaryKey = primaryKeyName; pd.TableInfo.AutoIncrement = true; foreach (var col in ((IDictionary<string, object>) o).Keys) { if (col != primaryKeyName) pd.Columns.Add(col, new ExpandoColumn() {ColumnName = col}); } return pd; } else #endif return ForType(t); }