首页 新闻 赞助 找找看

EF里面 怎么用变量代替泛型T

0
悬赏园豆:50 [待解决问题]

我现在用的EF感觉虽然非常简便,但是始终不知道如何用变量代替要传入的泛型。。

例如有这样一个方法,传入数据库名,还有ID获取名字

    public string get_MyName<T>(int id) 
        {

        using (var context = new DatabaseContext())
        {

            var my = context.Set<T>().Find(id);
                 
            

            return my.name;

        }
       }

我要获取中班对应的ID名字就需要 这样写
name=get_MyName<中班>(10);

现在这个 中班 这个泛型类名不知道怎么用变量代替,

想要写成
var class=中班;

这样我就可以
name=get_MyName<class>(10);

如果无法用变量代替 那数据库一变动就需要整个代码全部重写。

简单来说就是如何让EF支持动态新建表。。如果我要新增一个大班数据表,传入参数class=大班,如果按照之前传统的sql代码直接拼接倒是没什么问题。

这个EF要怎么连接到新建的表 又不改代码吗?

又或者是如何动态mapping映射数据表。。

EF
MayBreath的主页 MayBreath | 菜鸟二级 | 园豆:337
提问于:2018-10-24 03:42
< >
分享
所有回答(4)
0

public string get_MyName<T>(T name, int id)

这样?

fangq | 园豆:417 (菜鸟二级) | 2018-10-24 09:14
0

你这些问题,基本上都是以前不用ORM,刚刚开始学ORM的问题。
有的确实很难。
但是你如果不用以前的思维方式编程,而换成ORM的编程思维,先把EF入门了再说。
否则你还是只能回去使用SQL了。
简单的说,ORM一个特点是强类型,而你目前所有的编程思维都是弱类型的SQL 拼接。
而你所说的动态Mapping并非不能实现,而是难,需要你对EF跨过入门,进阶以后的事。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-10-24 09:17
0
  public class Test
    {
        public void Do<T>(int cc) where T : A
        {
            System.Console.WriteLine(typeof(T));
        }
        public void Do<T>(T t, int cc) where T : A
        {
            System.Console.WriteLine(t.GetType().FullName);
        }

        public void Do(System.Type t, int cc)
        {
            System.Console.WriteLine(t.FullName);
        }
    }

    public class A { }

    public class B : A { }

    public class C : A { }
    class Program
    {
        static void Main(string[] args)
        {

            A a = new A();
            A b = new B();
            A c = new C();
            Test t = new Test();
            t.Do(a, 1);
            t.Do(b, 1);
            t.Do(c, 1);

            t.Do(typeof(A),1);
            t.Do(typeof(B),1);
            t.Do(typeof(C),1);
        }
    }

心雨纷扬 | 园豆:309 (菜鸟二级) | 2018-10-29 17:36

EF的TPC,TPT,TPH可以了解下

支持(0) 反对(0) 心雨纷扬 | 园豆:309 (菜鸟二级) | 2018-10-29 17:41
0

你还是别用EF了,EF强调的是领域模型忘掉db,你的刚好相反,不知何为领域模型。

jiulang | 园豆:437 (菜鸟二级) | 2018-11-21 23:47

就喜欢你这样的人,把不懂说得那么清新脱俗

支持(0) 反对(0) MayBreath | 园豆:337 (菜鸟二级) | 2018-11-22 02:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册