2010-12-06 37 views
1

我有一個數據庫與許多單個孤立的表,我需要填充他們的內容到他們的實體。EF4:獲取EntitySet指定爲字符串

目前,我有每個像這樣每個表的東西:

try 
{ 
    using(DBContext context = new DBContext()) 
    { 
     var vehicleTypes = context.VehicleTypes; 
     return vehicleTypes; 
    } 
} 
catch(Exception ex) 
{ 
//handle error 
} 

我正在尋找這樣是最好的描述的東西:

var vehicleTypes = context.GetEntitySet(VehicleEntity); 
var buildingTypes = context.GetEntitySet(BuildingEntity); 

其中VehicleEntityBuildingEntity(。 ..)是來自實體模型的實體。 我知道我沒有明確的這個選項,但類似的方式會很好。擴展方法也是一種選擇...

我正在使用EntityFramework 4.0,POCO Self Tracking Entities(沒有代理)。

感謝

編輯:我最新的嘗試是這樣的:

public static IEnumerable<TEntity> GetTableContent<TEntity>() where TEntity:class 
    { 
     try 
     { 
      using (var context = new DBEntities()) 
      { 
       var result = context.ExecuteStoreQuery<TEntity>("SELECT * FROM " + typeof(TEntity).Name); //the table names correspond to Entity type class names 
       return result; 
      } 
     } 
     catch (Exception ex) 
     { 
      //handle error... 
     } 
    } 

,但我得到的錯誤:

The data reader is incompatible with the specified 'DBEntities.MyEntity'. A member of the type, 'Id', does not have a corresponding column in the data reader with the same name.

這是真的 - 名稱不匹配 - 但我想它會根據基於edmx定義的查詢映射表?我怎樣才能得到這個權利?

回答

-3

開始試圖讓前其實際工作的代碼是「通用」

result = context.ExecuteStoreQuery<Something>("SELECT SOMETHING_ID AS ID, ..., FROM SOMETHING..."); 
+0

這是如何有用嗎?如果你只是好奇它是否有用 - 它確實(我試過了)。但是,這不是我所需要的 - 我需要它是「通用的」(也就是說,我需要它能夠映射到edmx定義) – veljkoz 2010-12-09 08:52:57