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

时间:2014-11-25 11:02:56

标签: c# mysql linq entity-framework-5

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

我有以下简单的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. 要针对同一表格中的两个不同列进行验证的唯一性(列名称:系统& 用户
  3. 所以,简单来说, 我需要得到两列中都没有的最小整数

1 个答案:

答案 0 :(得分:0)

使其工作的一个选择是使用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方法执行存储过程。