Создание гибкого кода C # в MVC2 для хранимых процедур - PullRequest
0 голосов
/ 23 мая 2010

Благодаря предложению Дарина Димитрова Я получил большой шаг в понимании хорошего кода MVC, но у меня возникли некоторые проблемы с его гибкостью.

Я реализовал предложенное Дарином решениеэто отлично работает для отдельных контроллеров.Однако у меня возникли проблемы с его гибкостью.Я ищу следующее:

  • Чтобы иметь возможность создавать динамические имена столбцов в json

Вместо использования "Column1: 'value',... "и" Column2: 'value', ... "внутри json, я хотел бы использовать, например," id: 'value', ... "и" place: 'value' ... "для одной хранимой процедуры и «animal» и «type» в другой (в формате json).

  • Чтобы иметь возможность создавать динамическое количество столбцов в зависимости от того, какая хранимая процедура вызывается

Некоторые хранимые процедуры, из которых я хочу прочитать более двух строк, есть ли разумный способ сделать это?

  • Чтобы бытьвозможность сделать числовые (с плавающей точкой и целыми числами) строки из базы данных в json без кавычек

Вот так (имя и возраст);

{
    Column1: "John",
    Column2: 53
},

Буду очень признателен за любые отзывы и предложения / примеры кода, которые я могу получить здесь.Даже несовершенные.

1 Ответ

1 голос
/ 24 мая 2010

Как насчет использования анонимных объектов?Так, например, у вас может быть метод в вашем хранилище, который возвращает System.Object:

public interface IRepository
{
    object GetModel(int id);
}

Затем, в зависимости от хранимой процедуры, которую вы вызываете, вы получите другой анонимный тип:

public class RepositorySql : IRepository
{
    public object GetModel(int id) 
    {
        // TODO: Call a stored procedure and depending on the procedure you are 
        // calling return a different anonymous type, for example:
        return new 
        {
            Column1 = "value1",
            Column2 = "value2",
        }
    }
}

и, наконец, в вашем контроллере:

public ActionResult Index(int id)
{
    var model = _repository.GetModel(id);
    return Json(model);
}

Теперь, конечно, представление, потребляющее это действие, должно знать, какие столбцы есть в объекте JSON.Я бы порекомендовал вам использовать какой-то базовый тип вместо System.Object, из которого будут производиться другие модели и который содержал бы общие свойства.

Я действительно не знаю ваших требований, но если это просто вопрос возврата некоторыхсписок значений, которые будут варьироваться в зависимости от хранимой процедуры, вы можете просто вернуть IEnumerable<string>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...