Hi I got some wired issue, just want to ask if anyone could help me.

I got a Customised Linq to Nhibernate Extension for one class method.

public class DateTimeSubstractionInDaysGenerator : BaseHqlGeneratorForMethod
    {
        public DateTimeSubstractionInDaysGenerator()
        {
            var finalisedTourDepartureMethodDefinition =
                
ReflectionHelper.GetMethodDefinition<FinalisedTourDeparture>(dt => 
dt.GetDaysToDeparture(DateTime.Now));

            SupportedMethods = new[] { 
finalisedTourDepartureMethodDefinition, 
finalisedTourBookingServiceMethodDefinition };
        }

        public override HqlTreeNode BuildHql(MethodInfo method, Expression 
targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder 
treeBuilder, IHqlExpressionVisitor visitor)
        {
            var dateString = 
DateTime.Parse(arguments[0].ToString()).ToString("dd-MMM-yyyy");
            return 
treeBuilder.Subtract(visitor.Visit(Expression.Property(targetObject, 
"Departure")).AsExpression(), treeBuilder.MethodCall("to_date", 
visitor.Visit(Expression.Constant(dateString)).AsExpression()));
        }
    }

And I use this class method in my linq query something like this.
public class FinalisedTourDepartureRepository : 
BaseRepository<FinalisedTourDeparture>,
                                                    
IFinalisedTourDepartureRepository
    {
        public FinalisedTourDepartureRepository(ISession session) : 
base(session)
        {
        }

        #region IFinalisedTourDepartureRepository Members

        public IEnumerable<FinalisedTourDeparture> 
GetTourDepartureNeedToBeFinalised(IList<string> transmissionDestinations, 
DateTime finalisationDate)
        {

            return
                Table.Where(
                    td =>
                    td.GetDaysToDeparture(finalisationDate) <= 10);
        }

        #endregion
    }

My problem is when I 
call FinalisedTourDepartureRepository.GetTourDepartureNeedToBeFinalised 
twice in a row as follow. 

FinalisedTourDepartureRepository.GetTourDepartureNeedToBeFinalised(xxx, 
DateTime.Parse("10/12/2013"))
FinalisedTourDepartureRepository.GetTourDepartureNeedToBeFinalised(xxx, 
DateTime.Parse("10/12/2014"))

The ReadOnlyCollection<Expression> arguments in 
method DateTimeSubstractionInDaysGenerator.BuildHql  always catch the first 
datetime [DateTime.Parse("10/12/2013")], it seems my generator has a cache? 
I don't get it.

Is there anyone can help?

Thanks a lot

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/nhusers/-/mGiGpDuJTP8J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to