繁体   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