最近开发一个项目 数据库建立的时候 每张表的主键为int型 但是没设置为自动增长列
因此每次在新增数据的时候 都需要先取得表的最大ID
public static int GetMaxID_TcProductionBase() { var MaxID = db.TcProductionBase.Max(c => c.ID); return MaxID == 0 ? 1 : MaxID; }
其中红色为生成的表的类 每个表都要生成一个GetMaxID_XXXX的方法
请问有什么方式 可以只写一个 GetMaxID方法 然后传入对应的表类别 获取对应的表的最大ID呢
public static class xxxxx
{
public static int MaxID<T>(this DbSet<T> dbSet)
{
return dbSet.Max(o => o.ID);
}
}
试试
不行呢
@yellowshorts: 你的 db.TcProductionBase 是什么类型?
直接db.应该是没有方式,可以再写一层,IRepository<T> 到这层写个方法GetMaxID 这样就可以传进来表名直接调用这个方法了
IRepository<T>能否在详细说明下
@yellowshorts:
http://www.cnblogs.com/chinaniit/archive/2009/07/07/1518451.html
http://www.cnblogs.com/lori/archive/2011/05/18/2050031.html
http://www.cnblogs.com/lori/archive/2011/09/16/2178718.html
http://www.cnblogs.com/yomho/p/3296759.html
可以再搜搜别的看看
我用的是ObjectContext,
在IRepository中创建 接口:
IQueyable<TEntity> GetTable<TEntity>();
在Entities中实现接口:
IQueryable<TEntity> IRepository.GetTable<TEntity>()
{
return this.lbc.CreateQuery<TEntity>("[" + typeof(TEntity).Name + "]");
}
在Repository中实现以上方法:
public static int GetMaxID<T>()
{
return this.lbc.GetTable<T>().Max(s => s.ID);
}