Member 13058758 Ответов: 1

Как определить SQL-представления в модель представления класса в MVC


как определить SQL-представления в модель представления класса MVC и контроллер


мой sql-запрос, который мне нужно использовать

Select dbo.let.Name0,
sum (dbo.VCategory.Food) AS FoodSales,
sum (dbo.VCategory.Drink) AS DrinkSales,
sum (dbo.VCategory.Other) AS OtherSales,
COUNT(DISTINCT dbo. VCategory.CheckID) AS Checks
from dbo. let, dbo.Check INNER JOIN
                         dbo. VCategory ON dbo. dbo.Check.CheckID = dbo. VCategory.CheckID  WHERE (dbo. Check.Status = 3) AND (dbo.Check.OrderType <> 4) AND CAST(dbo. Check.SysDate AS DATE) = '2016-11-18' AND dbo. Check. let = dbo.let.let GROUP BY dbo. let.Name0, dbo.Check.let



моя модель представления


public class resturantClass
    {
        public int CheckID { get; set; }
        public string let { get; set; }

        public Nullable<byte> Status { get; set; }

        public Nullable<byte> OrderType { get; set; }

        public Nullable<System.DateTime> SysDate { get; set; }

        public string Name0 { get; set; }
       
        public Nullable<decimal> Food { get; set; }
        public Nullable<decimal> Drink{ get; set; }
        public Nullable<decimal> Other { get; set; }
    }


Что я уже пробовал:

в контроллерах
resturantClass res = new resturantClass();

            var detailslist = (
        from outlet in db.FposOutlets
        from checks in db.FposChecks join
        vcic in db.VposCheckItemCategories on checks.CheckID equals vcic.CheckID
        where checks.Status == 3 && checks.OrderType != 4 && outlet.Outlet == checks.Outlet
        select new
        {
            outlet.Outlet, outlet.Name0, checks.SysDate, checks.OrderType, checks.Status, vcic.CheckID, vcic.FoodSales, vcic.BeverageSales, vcic.OtherSales
        }).ToList();

            foreach (var item in detailslist)
            {
                res.Outlet = item.Outlet;
                res.Name0 = item.Name0;
                res.SysDate = item.SysDate;
                res.OrderType = item.OrderType;
                res.Status = item.Status;
                res.CheckID = item.CheckID;
                res.Food = item.Food ;
                res.Drink= item.Drink;
                res.Other = item.Other;
            }

return View(res);

Dave Kreskowiak

Итак, вы хотите описать проблему или дать сообщения об ошибках, или мы должны просто догадаться?

Member 13058758

модель в представлении razor не распознает эти элементы

public Nullable<decimal> Food { get; set; }
public Nullable<decimal> Drink{ get; set; }
public Nullable<decimal> Other { get; set; }

что существует в sqlview, как определить его в контроллере?

Dave Kreskowiak

Хорошо, "модель в представлении бритвы не распознает ..." ничего не значит. Если вы пытаетесь сказать, что код razor не использует значения, которые находятся в модели, нам нужно будет увидеть код razor, чтобы диагностировать это.

Кроме того, код контроллера, который вы разместили, тоже не имеет особого смысла. Вы перебираете коллекцию и повторно присваиваете значения одному экземпляру "resturantClass", перезаписывая предыдущие значения.

Если вы возвращаете только один объект из базы данных, используйте его .FirstOrDefault() или .SingleOrDefault() вместо .Вызова метода toList().

Member 13058758

я возвращаюсь передать список IEnumerable в представлении Razor

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Хорошо, вы ничего не добьетесь, ограничивая количество ввода, которое вы должны сделать в ответах на мои вопросы.

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

Кроме того, может быть разница в том, что код Razor ожидает для модели, и что вы на самом деле передаете в модель. return View(res); линия.

Если ваш код Razor ожидает IEnumerable, это не то, что вы передаете в коде контроллера. Вы проходите в единственном экземпляре a resturantClass.