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);
 }