2010-10-27 46 views
2

在下面的代碼中,除了外鍵字段以外,所有字段都從表中返回。我如何獲得外鍵字段顯示?我只想要一個等同於從tableName中選擇*。使用實體框架從表中選擇所有字段

 public ActionResult ShowAllTables() 
    { 


     var model = new CSLA_StagingModel() 
     { 

      depots = db.CSLA_DEPOT.Where(c => c.DEPOT_ID == 10065).ToList<CSLA_DEPOT>(), 
      addresses = db.CSLA_ADDRESS.Where(a => a.CSLA_DEPOT.DEPOT_ID == 10065).ToList<CSLA_ADDRESS>(), 
     }; 


     return View(model); 

    } 

注:我使用VS2008

編輯:我想我可能會使用LINQ to SQL的,直到我獲得VS2010

回答

1

沒有SELECT *

你可以,但是,項目的ID:

var q = from a in db.CSLA_ADDRESS 
     select new 
     { 
      ADDRESS_ID = a.ADDRESS_ID, 
      DEPOT_ID = a.CSLA_DEPOT.DEPOT_ID, 
      // etc. 
     }; 
1

在實體框架3.5和VS 2008,外鍵下的導航性能(又名獨立協會)牆根,並不能直接訪問通過目標實體對象。因此,爲了訪問它們,您需要通過導航屬性(例如CSLA_DEPOT)來完成它,如Craig發佈的代碼。

0

我會將FK字段添加爲實體上的定標器屬性。如果此FK VALUE具有商業含義,那麼將其添加到您的概念模型中沒有任何問題。這也將使代碼離散和可讀。