【问题标题】:Smallest available integer in MySql with EF5带有 EF5 的 MySql 中的最小可用整数
【发布时间】:2014-11-25 11:02:56
【问题描述】:

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

我有以下简单的 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. 要针对同一张表中的两个不同列验证唯一性(列名:system & user

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多