SubSonic 3.0.0.3 | SimpleRepository | Формула свойство / поле

Мне нужно добавить свойство / поле Formula на SubSonic | SimpleRepository Может кто подскажет как? или это невозможно?

br, без тела


person No Body    schedule 03.08.2009    source источник


Ответы (3)


Просто добавьте [SubSonicIgnore] к вышеуказанной LineCost

so

        [SubSonicIgnore]
        public decimal LineCost
        {
            get { return Qty * Convert.ToDecimal(LineCost); }
        }

это происходит, когда LineCost отображается в базу данных.

person Podge    schedule 03.08.2009
comment
Это работает !, но Podge, это правильный способ выполнить вышеуказанные требования или просто обходной путь? - person No Body; 04.08.2009
comment
Я не рассматриваю это как обходной путь, я считаю, что это лучшее решение. Причина в том, что у вас есть одно место, где происходит вычисление, если вы делаете это в SQL / Linq, вы объединяете извлечение данных с вычислением, каждый раз, когда вы извлекаете OrderLine, вы должны включать вычисление, забывать, и у вас есть приятная маленькая особенность. - person Podge; 04.08.2009

Почему бы просто не провести расчет внутри самого определения объекта?

So

    public class OrderLine
    {
        public int OrderId { get; set; }
        public int Qty { get; set; }
        public decimal ProductPrice { get; set; }
        public decimal LineCost
        {
            get { return Qty * Convert.ToDecimal(LineCost); }
        }
    }
person Podge    schedule 03.08.2009
comment
спасибо Толстяк, попробую вот этот. Это правильный способ или просто обходной путь? - person No Body; 03.08.2009
comment
Ошибка: SqlException: недопустимое имя столбца 'LineCost' @Podge, помните, что я использую SimpleRepository и вручную создал свой класс / объект - person No Body; 03.08.2009

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

                var x =from o in repo.All<OrderLine>()    
                    select new   
                    {
                        OrderId = o.OrderId,
                        ProductPrice = o.ProductPrice,
                        Qty = o.Qty,
                        LineCost = o.ProductPrice * o.Qty
                    };


            List<OrderLine> orders = null;
            foreach (var t in x)
            {
                orders.Add(new OrderLine
                {
                    LineCost = t.LineCost,
                    OrderId = t.OrderId,
                    ProductPrice = t.ProductPrice,
                    Qty = t.Qty
                });

            }
person Podge    schedule 04.08.2009