首页 新闻 会员 周边

Linq To Entity 或得表的最大ID 值

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

最近开发一个项目 数据库建立的时候 每张表的主键为int型 但是没设置为自动增长列

因此每次在新增数据的时候 都需要先取得表的最大ID

  public static int GetMaxID_TcProductionBase()
    {
        var MaxID = db.TcProductionBase.Max(c => c.ID);
        return MaxID == 0 ? 1 : MaxID;
    }

其中红色为生成的表的类 每个表都要生成一个GetMaxID_XXXX的方法

请问有什么方式 可以只写一个 GetMaxID方法 然后传入对应的表类别 获取对应的表的最大ID呢

yellowshorts的主页 yellowshorts | 初学一级 | 园豆:162
提问于:2014-02-28 11:14
< >
分享
所有回答(3)
0

public static class xxxxx

{

    public static int MaxID<T>(this DbSet<T> dbSet)

   {

            return dbSet.Max(o => o.ID);

    }

}

 

试试

Launcher | 园豆:45045 (高人七级) | 2014-02-28 11:39

不行呢

支持(0) 反对(0) yellowshorts | 园豆:162 (初学一级) | 2014-02-28 13:31

@yellowshorts: 你的 db.TcProductionBase 是什么类型?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-02-28 13:35
0

直接db.应该是没有方式,可以再写一层,IRepository<T> 到这层写个方法GetMaxID 这样就可以传进来表名直接调用这个方法了

开山怪不怪 | 园豆:544 (小虾三级) | 2014-02-28 11:40

IRepository<T>能否在详细说明下

支持(0) 反对(0) yellowshorts | 园豆:162 (初学一级) | 2014-02-28 13:31

@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

可以再搜搜别的看看

支持(0) 反对(0) 开山怪不怪 | 园豆:544 (小虾三级) | 2014-02-28 14:08
0

我用的是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);

}

惊梦无痕 | 园豆:206 (菜鸟二级) | 2014-02-28 14:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册