簡體   English   中英

Linq到實體查詢不檢索記錄

[英]Linq to Entites Query does not retrieve the records

由於需要從4個不同的實體集(醫療,城市,地區,醫療服務)進行查詢,因此創建了如下的視圖模型;

  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; }
}

並從以下四個表中獲取所有記錄的類;

 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條記錄,這些記錄是正確的,但它們為空;

在此處輸入圖片說明

您能把這個問題告訴我嗎?

看到截圖確認了我的懷疑...

嘗試

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上訪問。

據我所知,生成僅具有偽get的實體; 組; 該方法不足以檢索與數據庫數據相對應的數據。 我認為您可以通過在實體的定義中映射至少必要的字段來解決此問題。

我希望這會成功,祝您好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM