asp.net - How do I use EntityDatasource (Or LinqDatasource) with a Union clause -


how combine records 2 tables in entitydatasource control? have googled , searched on no luck. sql of need is

select distinct username  (select s.username project_stakeholders s union select t.username project_team_members t) 

my entities structure follows:

project_stakeholders ---------------------- project_stakeholders.record_id (pk) project_stakeholders.username project_stakeholders.project project_stakeholders.project_id (fk) project_stakeholders.status  project_team_members --------------------- project_team_members.record_id (pk) project_team_members.username project_team_members.project project_team_members.project_id (fk) project_team_members.status 

i found question provides answer question mine more advanced because subqueries entities not related primary entity.

i have changed datasource liqdatasource control , added code below in code behind of onselecting event of linqdatasource control:

    protected void taskprofileds_selecting(object sender, linqdatasourceselecteventargs e)     {          int project_id = 0;          if (int32.tryparse(request.querystring["id"], out project_id))         {              using (myentitiescontext db = new myentitiescontext())             {                 var teammembers = tm in db.team_members tm.project_id == project_id select tm.username;                 var stakeholders = sh in db.project_stakeholders sh.project_id == project_id select sh.username;                 var result = usr in db.project_profiles (teammembers.contains(usr.caption) || stakeholders.contains(usr.caption)) select usr;                  e.result = result;              }         }     } 

but unfortunately, following error:

the operation cannot completed because dbcontext has been disposed.

any ideas appreciated.

here code worked me fetch records unrelated tables (entities). used linqdatasource, in querycreated event, changed query own linq query:

protected void taskds_querycreated(object sender, querycreatedeventargs e)     {         int project_id = 0;          if (int32.tryparse(request.querystring["id"], out project_id))         {              using (sdmanagerentities db = new sdmanagerentities())             {                 list<project_profiles> usrs = new list<project_profiles>();                  var users1 = db.team_members.where(t => t.project_id == project_id).select(it => it.username);                 var users2 = db.project_stakeholders.where(s => s.project_id == project_id).select(it => it.username);                  var allmembers = users1.concat(users2);                  foreach (var member in allmembers.distinct())                 {                     project_profiles usr = db.project_profiles.singleordefault(it => it.caption == member);                     if (!usrs.contains(usr))                     {                         usrs.add(usr);                     }                 }                  e.query = usrs.asqueryable().orderby(it => it.fullname);              }         }     } 

i hope helps else


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -