使用 EF5 的 MySql 中的最小可用整数

本文关键字:整数 EF5 MySql 使用 | 更新日期: 2023-09-27 18:31:57

我最近遇到了一个情况,我需要在我的一个表中获取最小的可用整数。

我有以下简单的SQL查询

SELECT MIN(t1.system + 1) AS nextSystem 
FROM mytable t1
   LEFT JOIN mytablet2
       ON t1.system  + 1 = t2.system
WHERE t2.system  IS NULL

但我不能使用它,因为

  1. 我必须使用 LINQ to SQL(使用 EF 5)
  2. 要针对同一表中的两个不同列(列名:系统和用户)验证的唯一性

所以,简单来说,我需要获取两列中不存在的最小整数

使用 EF5 的 MySql 中的最小可用整数

使其工作的一种选择是使用 SqlQuery 方法:

http://msdn.microsoft.com/en-us/library/system.data.entity.database.sqlquery%28v=vs.103%29.aspx

您可以生成原始 SQL 并在不使用 LINQ 的情况下执行它。下面是使用 T-SQL 的示例:

 using (var ctx = new Entities())
{
    var query =
        ctx.Database.SqlQuery<int>(
            "SELECT TOP 1 t1.Id+1 FROM MyEntities t1 WHERE NOT EXISTS(SELECT * FROM MyEntities t2 WHERE t2.Id = t1.Id + 1) ORDER BY t1.Id");
    var res = query.First();
}

或者,如果您不喜欢在数据层中嵌入 SQL,则可以使用 SqlQuery 方法执行存储过程。