Как создавать более сложные модели из множества таблиц в asp.net mvc, linq - PullRequest
1 голос
/ 10 сентября 2009

Я знаю, что на SOF есть несколько подобных вопросов, но мне было интересно, если кто-нибудь может кратко ответить на него примерами.

Я новичок в linq и mvc, и, хотя многие из них не работают, мне трудно представить, что я могу делать много вещей с данными. Вот пример.

Допустим, у меня есть 5 таблиц, некоторые из которых имеют отношения, а некоторые нет.

И я хочу, чтобы данные из всех этих таблиц отображались в моем представлении.

Должен ли я добавлять все эти данные в модель и передавать их на этом этапе или делать это на более позднем этапе? Я мог представить, как можно создать набор данных со всей этой информацией и извлечь ее из представления, но это не так.

Я также мог бы представить, что делаю 5 отдельных запросов sql, но такое ощущение, что это будет идти против шаблона mvc, а также я не был бы уверен в том, как все они будут отправлены в представление, если они все не были объединены в модель. (Однако я заинтересован в этом, так как считаю, что это будет способ преодоления проблем с производительностью, которые может иметь linq, но не будет масштабироваться до тех пор, пока у меня тоже, мне просто нравится идея власти, которая принесет.

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

Заранее спасибо.

Вот некоторый код модели, который я пытаюсь использовать в настоящее время, в терминах ужина с ботаником

 public IQueryable<Dinner> GetAllUserDinnersAndRSVP(string userId)
    {
        return from dinner in db.Dinners
               where dinner.userId == userId

               join rsvp in db.Dinners
               on userId equals rsvp.userId
               select dinner;
    }

Но когда я прихожу к списку всех элементов этой модели в представлении, я не могу заставить его циклически просматривать записи rsvp.

Не уверен, что это полезный пример или нет !!

1 Ответ

0 голосов
/ 10 сентября 2009

Я только что решил эту проблему, где у меня была таблица заказов (1 строка) и таблица позиций заказов (много строк), и я хотел показать 1 просмотр - счет-фактуру!

вот пример:

код в тесте actionResults (строковая кавычка)

 ViewData["quoteid"] = quoteid;

        var model = new QuoteViewModel
        {
            quoteInfo = new_online_quote.SingleOrDefault(x => x.quoteid == Convert.ToInt32(quoteid)),
            quoteItems = new_quote_item.Find(x => x.quote_id == Convert.ToInt32(quoteid))
        };

        return View(model);

тогда у меня есть новый класс за пределами controllerClass, но на той же странице

public class QuoteViewModel
{
    public new_online_quote quoteInfo { get; set; }
    public IEnumerable<new_quote_item> quoteItems { get; set; }
}

quoteItems IENumerable, потому что это будет список элементов, из которых я буду перемещаться и т. Д.

на реальной странице я только что создал нормальное представление, не строго напечатанное, но вы можете сделать.

вверху страницы у меня есть это

Inherits="System.Web.Mvc.ViewPage<namespace.Controllers.QuoteViewModel>"

это наследует мой класс:

Теперь я могу получить доступ к обоим классам и данным, например:

Total Quote Cost <%=String.Format("{0:C}",Model.quoteInfo.totalcost) %> inc VAT @ 15%<br />

Ваши товары:

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

надеюсь, это поможет, я действительно новичок в MVC и в этом виде кодирования, но все вышеперечисленное было собрано вместе с помощью на этом форуме, так что это единственное право передать его обратно.

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