[英]How to pass an string as a type parameter for a generic DbSet in Entity Framework?
[英]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.