使用 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
但我不能使用它,因为
- 我必须使用 LINQ to SQL(使用 EF 5)
- 要针对同一表中的两个不同列(列名:系统和用户)验证的唯一性
所以,简单来说,我需要获取两列中不存在的最小整数
使其工作的一种选择是使用 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 方法执行存储过程。