c# - Error in selecting value from RavenDB -


i using ravendb in mvc4 project when store object of class ravendb works fine when performing select operation throws error:

object reference not set instance of object

on queries

ravenbasecontroller.cs

public class ravenbasecontroller : controller {    public idocumentsession ravensession { get; protected set; }     protected override void onactionexecuting(actionexecutingcontext filtercontext)    {       ravensession = mvcapplication.store.opensession("ravendbtesting");    }     protected override void onactionexecuted(actionexecutedcontext filtercontext)    {       if (filtercontext.ischildaction)          return;        using (ravensession)       {          if (filtercontext.exception != null)              return;           if (ravensession != null)              ravensession.savechanges();       }    } } 

activation.cs

public class activation : ravenbasecontroller {     public string tokenid { get; set; }      public bool validate(string tid)     {         var query = u in ravensession.query<register>() u.tokenid == tid select u;          foreach (var v in query)         {             v.isapproved = true;         }          ravensession.savechanges();         return true;     } } 

queries tried:

var results = u in ravensession.query<register>()     u.tokenid == tid     select u;  var query= ravensession.query<register>()                                      .where(x => x.tokenid == tid)                                       .tolist();  

i can't understand why not working new ravendb

update

all queries work fine if run controller if run class file, error "object reference not set instance of object" occurs

if try instanciate var ctrl = new activation(); , ctrl.validate(x); won't work onactionexecuting didn't run. function called automatically mvc framework when serving request, not when manually testing.

since mvc instantiates new controller on each requests anyway, should move ravensession initialization constructor since not seem use info in request context:

public class ravenbasecontroller : controller {    public idocumentsession ravensession { get; protected set; }     public ravenbasecontroller()    {       ravensession = mvcapplication.store.opensession("ravendbtesting");    }     protected override void onactionexecuted(actionexecutedcontext filtercontext)    {       if (filtercontext.ischildaction)          return;        using (ravensession)       {          if (filtercontext.exception != null)              return;           if (ravensession != null)              ravensession.savechanges();       }    } } 

the better way use dependency injection pass session constructor parameter, above should work you.


Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -