簡體   English   中英

實體框架和通用類型參數

[英]Entity Framework and Generic Type Parameter

我有一個數據庫,其中包含從第三個來源導入的幾百張表。 使用實體框架,這些表成為標記為E_1,E_2,E_3的對象集。所有表都具有一組公共列,並且可以使用一個函數進行查詢。

我有以下代碼:

namespace Foo{
    public static class Data{

       public static MyEntities dataContext = new MyEntities();

       public static void getData<T>(string entityName) where T : class
       {
          string queryString = "SELECT result FROM ";
          queryString += Data.dataContext.DefaultContainerName + "." + entityName;

          ObjectQuery<T> myQuery = Data.dataContext.CreateQuery<T>(queryString, null);

        // do stuff
       }

       public static void test(){
         string entityName = "E_1";
         Data.getData<E_1>(entityName);
       }
}

在test()中,我將字符串“ E_1”傳遞給函數getData(),還將類型類Foo.E_1插入到getData <>中作為通用類型參數。

實際上,直到運行時才知道E_1。 在運行時,我創建了entityName字符串,但是如何將該字符串轉換為getData <>所需的通用參數類型?

謝謝。

實際上,直到運行時才知道E_1

實際上,Anjd是:

  • 非常糟糕的數據庫設計和
  • 實體框架不支持的某些功能。

這樣簡單。

所有表都有一組通用的列

因此,您可以使一個類(例如MyImportType)捕獲您的查詢結果,並使用ExecuteStoreQuery代替ObjectQuery

var data = Data.dataContext.ExecuteStoreQuery<MyImportType>(queryString);

而且getData不需要泛型類型參數。

順便說一句:我同意TomTom的數據庫設計非常糟糕。 如果可以,請至少將具有相同列的表合並到一個表中。

暫無
暫無

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

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