Cat.Data/Cat.Data.EF/SqlQueryExtension.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Cat.Util;
namespace Cat.Data.EF
{
public static class SqlQueryExtension
{
public static async Task<IList<T>> SqlQuery<T>(this DbContext db, string sql, params object[] parameters) where T : class
{
using (var db2 = new ContextForQueryType<T>(db.Database.GetDbConnection()))
{
return await db2.Set<T>().FromSqlRaw(sql, parameters).ToListAsync();
}
}
private class ContextForQueryType<T> : DbContext where T : class
{
private readonly DbConnection connection;
public ContextForQueryType(DbConnection connection)
{
this.connection = connection;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// switch on the connection type name to enable support multiple providers
string dbType = GlobalContext.SystemConfig.DBProvider;
switch (dbType)
{
case "SqlServer":
optionsBuilder.UseSqlServer(connection, options => options.EnableRetryOnFailure());
break;
case "MySql":
optionsBuilder.UseMySql(connection, options => options.EnableRetryOnFailure());
break;
case "Oracle":
break;
default:
throw new Exception("未找到数据库配置");
}
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<T>(p =>
{
p.HasNoKey();
});
base.OnModelCreating(modelBuilder);
}
}
}
后面还有 1 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。