How do I combine records from two tables in an Entitydatasource control? I have googled it and searched on SO with no luck. The SQL of what I need is
SELECT DISTINCT username FROM
(SELECT s.username FROM project_stakeholders s
UNION
SELECT t.username FROM project_team_members t)
My entities structure is as 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 this question that almost provides an answer to my question but mine is more advanced because my SubQueries are from Entities not related to the primary entity.
I have changed my Datasource to LiqDatasource Control and added the code below in the Code Behind of the Onselecting Event of the 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 = from tm in db.team_members where tm.project_id == project_id select tm.username;
var Stakeholders = from sh in db.project_stakeholders where sh.project_id == project_id select sh.username;
var result = from usr in db.project_profiles where (TeamMembers.Contains(usr.caption) || Stakeholders.Contains(usr.caption)) select usr;
e.Result = result;
}
}
}
But unfortunately, I get the following error:
The operation cannot be completed because the DbContext has been disposed.
any ideas will be greatly appreciated.