Репликация таблицы Postgres 9.5

Сегодня, проведя довольно много времени, пытаясь обернуть мой мозг вокруг (значительного, но мощного) смещения парадигмы между старыми способами обработки данных веб-формы и тем, как это делается с помощью WebAPI, я думал, что добавлю свои 2 цента к этому обсуждению.

То, что я хотел сделать (что довольно часто используется для обработки веб-форм POST), заключается в том, чтобы иметь возможность захватывать любые значения форм, которые я хочу, в любом порядке. Скажите, что вы можете сделать, если у вас есть данные в файле System.Collections.Specialized.NameValueCollection. Но получается, что в WebAPI данные из POST возвращаются к вам в качестве потока. Таким образом, вы не можете напрямую это сделать.

Но есть классный маленький класс с именем FormDataCollection (в System.Net.Http.Formatting), и то, что он позволит вам сделать, - это перебирать вашу коллекцию один раз .

Итак, я написал простой метод утилиты, который будет запускаться через FormDataCollection один раз и вставьте все значения в NameValueCollection. Как только это будет сделано, вы можете перескакивать по всем данным в ваше сердце.

Итак, в моем производном классе ApiController у меня есть метод post, подобный этому:

    public void Post(FormDataCollection formData)
    {
        NameValueCollection valueMap = WebAPIUtils.Convert(formData);

        ... my code that uses the data in the NameValueCollection
    }

Метод преобразования в моем статическом классе WebAPIUtils выглядит следующим образом:

    /// <summary>
    /// Copy the values contained in the given FormDataCollection into 
    /// a NameValueCollection instance.
    /// </summary>
    /// <param name="formDataCollection">The FormDataCollection instance. (required, but can be empty)</param>
    /// <returns>The NameValueCollection. Never returned null, but may be empty.</returns>
    public static NameValueCollection Convert(FormDataCollection formDataCollection)
    {
        Validate.IsNotNull("formDataCollection", formDataCollection);

        IEnumerator<KeyValuePair<string, string>> pairs = formDataCollection.GetEnumerator();

        NameValueCollection collection = new NameValueCollection();

        while (pairs.MoveNext())
        {
            KeyValuePair<string, string> pair = pairs.Current;

            collection.Add(pair.Key, pair.Value);
        }

        return collection;
     }

Надеюсь, что это поможет!

0
задан user3837299 13 July 2018 в 08:28
поделиться