Asp.net mvc3: Как извлечь данные из базы данных и заполнить модель представления одной целью? - PullRequest
4 голосов
/ 22 января 2011

Мне нужно извлечь данные из БД и заполнить модель представления, есть ли лучший способ сделать это?В настоящее время я делаю что-то вроде этого.

ViewModel vm = new ViewModel();
var recentBill = context.Money.Take(10);
foreach (var r in recnetBill)
{
    vm.lst.Add(r);
}

Ответы [ 3 ]

2 голосов
/ 22 января 2011

IEnumerable имеет функцию ToList(), которая возвращает список указанного типа.

vm.lst = context.Money.Take(10).ToList(); // returns a List<Money>
1 голос
/ 22 января 2011

Я бы порекомендовал вам предотвратить возможность изменения ViewModel.lst, то есть тип lst должен быть IEnumerable вместо List / IList (конечно, если ваш следующий код не требует функциональности List).

Кроме того,Я предполагаю, что вы не изменяете ссылку на lst, поэтому вы можете удалить setter и инициализировать lst через конструктор.

    public class ViewModel
    {
        public ViewModel(IEnumerable<Money> lst)
        {
            this._lst = lst;
        }

        private readonly IEnumerable<Money> _lst;
        IEnumerable<Money> Lst 
        { 
            get 
            {
                return this._lst;
            }
        }
        // other properties
    }

    public ActionResult GetMonies()
    {
        var model = new ViewModel(context.Money.Take(10).ToArray());
        return View(model);
    }

Этот подход гарантирует, что потребители вашего кода не будут изменять ваш ViewModel.Lst случайно.

0 голосов
/ 22 января 2011

Предполагается, что ваша ViewModel выглядит так:

public class ViewModel
{
   IEnumerable<Money> lst { get; set; }
   // other properties
}

Просто сделайте это:

public ActionResult GetMonies()
{
   var monies = context.Money
                      .Take(10)
                      .ToList();

   var model = new ViewModel { lst = monies };

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