Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RavenDB - Computed Properties

Tags:

ravendb

I have a document with a few computed properties. Properties that have no setter and can call other methods on my class to return a result, example:

public class Order
{
    public string CustomerId { get; set; }

    public string VehicleId { get; set; }

    public DateTime OrderDate { get; set; }

    public decimal CommissionPercent { get; set; }

    public List<OrdersLines> OrderLines { get; set; }

    public decimal Total
    {
        get { return GetOrderLinesTotal() + SomeDecimal + AnotherDecimal; }
    }

    public decimal GetOrderLinesTotal()
    {
        return OrderLines.Sum(x => x.Amount);
    }
}

I use a simple index to search for Orders by customer, date and some properties on the Vehicle document using lucene query and a Transformer to create my view models. I've looked at Scripted Index Results and I'm not sure if it would apply in this case.

public class ViewModel
{
    public string OrderId { get; set; }
    public string CustomerName { get; set; }
    public string VehicleName { get; set; }
    public string Total { get; set; }
}

How do i get the computed value from the Total property when I query these documents?

I've simplified the GetOrderLinesTotal some what, in fact it is a complex method that takes a lot of other properties into account when calculating the total.

I only get the computed value that serialized when the document was created or updated.

like image 500
JCoder23 Avatar asked Apr 29 '26 01:04

JCoder23


1 Answers

I realized that this is more a of a document design problem rather than trying to do something RavenDB was not meant to do. I simplified my document and used a map/reduce to solve the problem.

like image 188
JCoder23 Avatar answered May 03 '26 20:05

JCoder23



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!