如下代码:
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>
请问如何实现? 可能表达的不是很清楚。
重新理一理问题:UnitOfWork中的AdminInfo想动态创建是不是?
以上:把AdminInfo放到父类中,调用时引用,更改时重写。
那么公共的类呢?
@kezhiping: 是类中方法公共还是属性公共?想复用代码或者构造个灵活的框架无非就写接口,写父类。
@takeurhand: public class Repository : AspNetDemo.IRespositories.IRepository
@kezhiping: 除了编码技巧,还要有业务逻辑。你欠缺后者。
以上,祝好。
@takeurhand: 一些小项目直接用Repository统一调用增删改查分页等,不需要重新写针对某个表的类,也不需要什么业务逻辑。
动用反射吧,理论上能实现。
求代码,我也是看了个反射的例子,自动注入的,所以才问上面的问题
@kezhiping: http://www.cnblogs.com/jiagoushi/p/4051270.html这里面就有代码。
因为你定义了DbSet,所以,AdminInfo在DbContext里注册了(EF自动的),如果你没有定义,那么要通过其它的方式来定义,比如初始化代码里。
有代码的直接上,测试通过给分,谢谢