由于我需要来自4个不同实体集(Medical,City,Region,MedicalServices)的查询,因此我创建了一个viewmodel,如下所示;
public class MedicalCityRegionView
{
public Entity.Medical V_Medical { get; set; }
public Entity.City V_City {get;set;}
public Entity.Region V_Region{get;set;}
public Entity.MedicalService V_MedicalService{ get; set; }
}
一个从这4个表中获取所有记录的类,如下所示;
public class EntityHandler
{
public IQueryable<MedicalCityRegionView> GetAll(Entity.MedicalEntities MCR_View)
{
IQueryable<MedicalCityRegionView> result = from mID in MCR_View.Medicals
join cs in MCR_View.Cities on mID.CityFK equals cs.CityID
join reg in MCR_View.Regions on cs.RegionFK equals reg.RegionID
select new MedicalCityRegionView();
return result;
}
}
这部分是在背后的代码上;
result = from mID in em.Medicals
join ms in em.MedicalServices on mID.MsMedicalFK
equals ms.ServiceID
join c in em.Cities on mID.CityFK equals c.CityID
join reg in em.Regions on c.RegionFK equals
reg.RegionID
where ms.ServiceID == SelectedMedicalService
&&
c.CityID == SelectedCity
select new Classes.MedicalCityRegionView();
listView_MainContent.DataSource = result.ToList();
listView_MainContent.DataBind();
我得到的错误;
An exception of type 'System.Web.HttpException' occurred in
System.Web.dll but was not handled in user code
Additional information: DataBinding:
'MedicalBootStrap.Classes.MedicalCityRegionView' does not
contain a property with the name 'MedicalID'.
由于医疗实体确实包含MedicalID,我认为“public Entity.Medical V_Medical {get; set;}”就足够了。
正如您在图像上看到的那样,已经创建了14条记录,这些记录是正确的,但它们是空的;
请你告诉我这个问题吗?
答案 0 :(得分:1)
看到截图确认了我的怀疑......
尝试
IQueryable<MedicalCityRegionView> result = from mID in MCR_View.Medicals
join cs in MCR_View.Cities on mID.CityFK equals cs.CityID
join reg in MCR_View.Regions on cs.RegionFK equals reg.RegionID
select new MedicalCityRegionView()
{ V_Medical = mID,
V_City = cs,
V_Region = reg };
和
result = from mID in em.Medicals
join ms in em.MedicalServices on mID.MsMedicalFK
equals ms.ServiceID
join c in em.Cities on mID.CityFK equals c.CityID
join reg in em.Regions on c.RegionFK equals
reg.RegionID
where ms.ServiceID == SelectedMedicalService
&&
c.CityID == SelectedCity
select new Classes.MedicalCityRegionView()
{ V_Medical = mID,
V_City = c,
V_Region = reg,
V_MedicalService = ms};
这应该会在14个实例中为您提供数据。
对于其余部分,Medical.ID或Medical.MedicalID可以作为MedicalCityRegionView.Medical.Id访问,而不是直接在MedicalCityRegionView上。
答案 1 :(得分:0)
据我所知,生成只有虚拟get的实体;组;方法不足以检索与数据库数据相对应的数据。我认为你可以通过映射实体定义中至少必要的字段来解决这个问题。
我希望这会奏效,祝你好运!