首页 新闻 会员 周边 捐助

手动创建DbSet类型的实例

0
悬赏园豆:30 [已关闭问题] 关闭于 2015-02-05 17:02

如下代码:

public class UnitOfWork : DbContext
{
////其他部分省略
public DbSet<AdminInfo> AdminInfo { get; set; }
}

然后有如下查询:

public IList<T> GetList<T>(Expression<Func<T, bool>> express) where T : class
        {
            using (UnitOfWork db = new UnitOfWork())
            {
                return db.Set<T>().Where(express).ToList();
            }
        }

程序运行正常,当我注释掉  public DbSet<AdminInfo> AdminInfo { get; set; }

程序异常:模型中找不到 AdminInfo

现在,我想动态的去创建 public DbSet<AdminInfo> AdminInfo { get; set; }

以至于只有当我调用AdminInfo的时候才创建,不调用的时候第一次建立DbContext的时候不调用DbSet<AdminInfo>

请问如何实现?  可能表达的不是很清楚。

kezhiping的主页 kezhiping | 初学一级 | 园豆:197
提问于:2014-10-28 15:56
< >
分享
所有回答(3)
0

重新理一理问题:UnitOfWork中的AdminInfo想动态创建是不是?

以上:把AdminInfo放到父类中,调用时引用,更改时重写。

CaiYongji | 园豆:1267 (小虾三级) | 2014-10-28 16:05

那么公共的类呢?

支持(0) 反对(0) kezhiping | 园豆:197 (初学一级) | 2014-10-28 16:07

@kezhiping: 是类中方法公共还是属性公共?想复用代码或者构造个灵活的框架无非就写接口,写父类。

支持(0) 反对(0) CaiYongji | 园豆:1267 (小虾三级) | 2014-10-28 16:10

@takeurhand: public class Repository : AspNetDemo.IRespositories.IRepository

支持(0) 反对(0) kezhiping | 园豆:197 (初学一级) | 2014-10-28 16:14

@kezhiping: 除了编码技巧,还要有业务逻辑。你欠缺后者。

 

以上,祝好。

支持(0) 反对(0) CaiYongji | 园豆:1267 (小虾三级) | 2014-10-28 16:17

@takeurhand: 一些小项目直接用Repository统一调用增删改查分页等,不需要重新写针对某个表的类,也不需要什么业务逻辑。

支持(0) 反对(0) kezhiping | 园豆:197 (初学一级) | 2014-10-28 16:19
0

动用反射吧,理论上能实现。

幻天芒 | 园豆:37207 (高人七级) | 2014-10-28 16:21

求代码,我也是看了个反射的例子,自动注入的,所以才问上面的问题

支持(0) 反对(0) kezhiping | 园豆:197 (初学一级) | 2014-10-28 16:22

@kezhiping: http://www.cnblogs.com/jiagoushi/p/4051270.html这里面就有代码。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-10-28 16:34
0

因为你定义了DbSet,所以,AdminInfo在DbContext里注册了(EF自动的),如果你没有定义,那么要通过其它的方式来定义,比如初始化代码里。

519740105 | 园豆:5810 (大侠五级) | 2014-10-28 16:43

有代码的直接上,测试通过给分,谢谢

支持(0) 反对(0) kezhiping | 园豆:197 (初学一级) | 2014-10-28 17:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册