2012-05-01 82 views
0

我有一個數據庫基礎的第一個應用程序,所以我沒有自制的模式,只是自動創建的。我想在單個視圖中顯示html表格/列表中單行選擇的一個和多個部分,以下是在重新創建的MS Access查詢中運行良好的SQL: - 一些括號:一對多,一個視圖我需要一個自定義模型嗎?

SELECT Facilitiy.FacilityName, Facilitiy.FacilityImage, FacilityDetail.FacilityDetailDescription 
FROM FacilityDetail INNER JOIN Facilitiy ON FacilityDetail.FacilityDetailID = Facilitiy.FacilityFK 
WHERE FacilityFK = id 

這一點讓我列表的正確很多部分的LINQ:

from fd in db.FacilityDetails 
join f in db.Facilities on fd.FacilityID equals f.FacilityFK 
where f.B FacilityFK == id 
select f 

我有點希望爲SQL的功能,但我需要創建一個模式,我可以把一個會做查看要顯示:

FacilityImage(one side)| FacilityName(單面)| FacilityDetailDescription(很多方面)

我聽說我可以簡單地通過做這樣的事情?

from fd in db.FacilityDetails.Include("Facilities") 

但它似乎沒有區別!

這使我相信我需要創建一個新的自定義模型?如果是的話,我會怎麼寫呢?

我試過這樣的東西,但我不能得到它的工作。

public class FacilitiyDetails 
{ 
    public string FacilitiesDescription { get; set; } 
    public string FacilitiesImage { get; set; } 
    public string BeachFacilitiesDescription { get; set; } 
{ 

我不太確定我應該在這裏做什麼!

+0

你能告訴我們你的實體模型? –

+0

沒有什麼值得一看的,它只是兩個數據庫表,其中一個包含所有可用的「設施」和一箇中間表,其中包含與主表中的「id」相關的所有設施。一個ID有很多FacilityDeatails,一個Facility有很多FacilityDeatails。 – Bojangles

回答

0

是的,你會需要一個自定義模型,因爲你想顯示多種類型。你需要有這樣的東西:

public class FacilityModel 
{ 
    public Facility Facility { get; set; } 
    public List<FacilityDetails> FacilityDetails { get; set; } 
} 

基於你的上面的類,並假設你有一個Facility類已經。然後,你需要改變你的LINQ to第一個獲得該基金的詳細信息:

var facility = (from f in db.Facilities 
       where f.FacilityID == id 
       select f) 
       .FirstOrDefault(); //just being safe here, 
            //if it's null, you'll want to escape out of 
            //the code below 

那麼你需要做,以獲取該設施的所有等同FacilityDetails

var facilityDetails = (from fd in db.FacilityDetails 
         where fd.FacilityFK == id 
         select fd).ToList() 

然後您可以創建做模型的新實例:

var model = new FacilityModel 
      { 
       Facility = facility, 
       FacilityDetails = facilityDetails 
      }; 


+0

謝謝你理解我在說什麼!我對如何提出問題感到痛苦很長一段時間,但是你把錘子擊在頭上!實際上,我比我想象的要緊密得多。再次感謝並感謝您的書面解釋! – Bojangles

+0

嘿嘿沒有問題,我只知道你的意思,因爲我在過去的工作中遇到了同樣的問題,所以我可以和他們聯繫!很高興我能幫上忙 :) – mattytommo