当前位置:编程学习 > C#/ASP.NET >>

高分悬赏解决MVC+EF问题,关于字符串映射实体

 switch ((string)opt["model"])
            {
                case "EavAttribute":
                    var obj = db.EavAttribute.SqlQuery(sql);
                    totals = obj.Count();
                    pager = new Pager(currPage, totals, pageSize);
                    skip = pager.firstRow;
                    take = pager.listRows;
                    dataList = obj.Skip(skip).Take(take);
                    break;

                case "Page":
                    var objp = db.Pages.SqlQuery(sql);
                    totals = objp.Count();
                    pager = new Pager(currPage, totals, pageSize);
                    skip = pager.firstRow;
                    take = pager.listRows;
                    dataList = objp.Skip(skip).Take(take);
                    break;
}大家看下代码,现在是写了一个通用方法,传一个字符串也就是(string)opt["model"](实际上这是一个实体类的名字)过来后,我现在用循环来得到相应的EF的数据,如果要是表多的话我要针对每个传入的字符串来循环下面的方法,在着我还要针对所有的表写循环里面的数据。我现在想针对(string)opt["model"](实际上这是一个实体类的名字)直接得到实体。也就是减少代码冗余,不用有多少表写多少个case下面的数据,就是能不能通过一个字符串也就是实体的名字直接得到实体数据?用反射怎么弄?或者IOC什么的其他方法,求大侠给个方法,最好是能写出具体例子? --------------------编程问答-------------------- 这种就可以用所谓的工厂方法,你可传入一个类型(Type),通过反射db获取特定的泛型,最后返回一个接口,然后对接口操作 Count()、Skip()等。 --------------------编程问答-------------------- 能在具体点吗?如何反射?要是可以的话可以给单独我QQ,可以细说下吗? --------------------编程问答-------------------- 简单点的话,用一个抽象多个不同的实现,就可以无限扩展! --------------------编程问答--------------------
引用 1 楼 ycg_893 的回复:
这种就可以用所谓的工厂方法,你可传入一个类型(Type),通过反射db获取特定的泛型,最后返回一个接口,然后对接口操作 Count()、Skip()等。
能在具体点吗?如何反射?要是可以的话可以给单独我QQ,可以细说下吗?  --------------------编程问答-------------------- 不懂 路过  --------------------编程问答-------------------- 亲,为什么不考虑下泛型呢?
在EF中,除了这种方式“db.EavAttribute.SqlQuery(sql);” ,你想想还有没有其他方式呢? --------------------编程问答--------------------

public class TestC<T> where T : class
    {
        public IQueryable<T> GetQuery()
        {
            MyDBEntities db = new MyDBEntities();
            return db.CreateObjectSet<T>();
        }
    }
--------------------编程问答--------------------
引用 7 楼 tptptp00 的回复:
C# code?12345678public class TestC<T> where T : class    {        public IQueryable<T> GetQuery()        {            MyDBEntities db = new MyDBEntities();            return db.CreateObje……

这个实现不了,我想要的是通过字符串也就是实体名字直接得到数据,你这还是用的泛型
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,