← Back to Skills Marketplace
335
Downloads
0
Stars
0
Active Installs
2
Versions
Install in OpenClaw
/install dapr-dotnet
Description
Expertise in backend development using Dapr and .NET7/8/9 to design, build, and optimize high-performance, maintainable microservice architectures.
README (SKILL.md)
API Patterns
创建yaml文件
// .dapr/components/pubsub.yaml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: pubsub
spec:
type: pubsub.redis
version: v1
metadata:
- name: redisHost
value: localhost:6379
- name: redisPassword
value: ""
// .dapr/components/statestore.yaml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: localhost:6379
- name: redisPassword
value: ""
- name: actorStateStore
value: "true"
// .dapr/config/config.yaml
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: daprConfig
spec:
tracing:
samplingRate: "1"
zipkin:
endpointAddress: http://localhost:9411/api/v2/spans
nameResolution:
component: "consul"
configuration:
client:
address: "localhost:8500"
selfRegister: true
Basic
// Api/Controllers/BaseController.cs
/// \x3Csummary>
/// 控制器基类
/// \x3C/summary>
[ApiController]
public class BaseController : ControllerBase
{
}
// Api/Extensions/ApiVersionInfo.cs
/// \x3Csummary>
/// api版本号
/// \x3C/summary>
public class ApiVersionInfo
{
/// \x3Csummary>
/// 版本:v1
/// \x3C/summary>
public static string v1;
}
// Api/Extensions/CustomExtensions.cs
/// \x3Csummary>
///
/// \x3C/summary>
public static class CustomExtensions
{
public static void MapCustomHealthChecks(this WebApplication app)
{
app.MapHealthChecks("/dapr", new HealthCheckOptions()
{
Predicate = _ => true,
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse,
});
app.MapHealthChecks("/app");
}
}
// Api/Extensions/DaprHealthCheck.cs
/// \x3Csummary>
///
/// \x3C/summary>
public class DaprHealthCheck : IHealthCheck
{
private readonly DaprClient _daprClient;
public DaprHealthCheck(DaprClient daprClient)
{
_daprClient = daprClient;
}
public async Task\x3CHealthCheckResult> CheckHealthAsync(
HealthCheckContext context,
CancellationToken cancellationToken = default)
{
var healthy = await _daprClient.CheckHealthAsync(cancellationToken);
if (healthy)
{
return HealthCheckResult.Healthy("Dapr sidecar is healthy.");
}
return HealthCheckResult.Unhealthy("Dapr sidecar is unhealthy.");
}
}
// Api/Extensions/ProgramExtensions.cs
/// \x3Csummary>
///
/// \x3C/summary>
public static class ProgramExtensions
{
private const string appName = "API";
public static void AddCustomServices(this WebApplicationBuilder builder)
{
builder.Services.AddSingleton\x3CIHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddMemoryCache(options =>
{
options.CompactionPercentage = 0.5; // 设置压缩百分比
});
}
public static void AddCustomDaprdProcess(this WebApplicationBuilder builder)
{
var vConfigurationManager = builder.Configuration;
var appId = vConfigurationManager.GetValue("AppProfile:AppId", "jytplatformequpmentapi");
var appPort = vConfigurationManager.GetValue("AppProfile:AppPort", 8118);
var daprHttpPort = vConfigurationManager.GetValue("AppProfile:DaprHttpPort", 18118);
var daprGrpcPort = vConfigurationManager.GetValue("AppProfile:DaprGrpcPort", 28118);
var otherDaprConfig = $"--config .dapr/config/config.yaml --resources-path .dapr/components --log-as-json";
#if DEBUG
BaseHelper.AddDaprdProcess(appId, appPort, daprHttpPort, daprGrpcPort, otherDaprConfig);
builder.Services.AddControllers().AddDapr(config =>
{
config.UseHttpEndpoint($"http://localhost:{daprHttpPort}");
config.UseGrpcEndpoint($"http://localhost:{daprGrpcPort}");
});
#else
builder.Services.AddControllers().AddDapr();
#endif
}
public static void AddCustomAutofac(this WebApplicationBuilder builder)
{
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer\x3CContainerBuilder>(builder =>
{
builder.RegisterModule\x3CAutofacModule>();
});
}
public static void AddCustomLog(this WebApplicationBuilder builder)
{
builder.Host.UseSerilog((hostingContext, loggerConfiguration) =>
{
const string vOutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}";
loggerConfiguration.MinimumLevel.Information()
.MinimumLevel.Override("Default", LogEventLevel.Information)
.MinimumLevel.Override("Microsoft", LogEventLevel.Error)
.MinimumLevel.Override("Microsoft.Hosting.Lifetime", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console(outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}", theme: Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme.Code)
.WriteTo.File(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs", "log-.txt"),
rollingInterval: RollingInterval.Hour,
outputTemplate: vOutputTemplate,
retainedFileCountLimit: 100)
.WriteTo.Logger(s => s.Filter.ByIncludingOnly(e => e.Level >= LogEventLevel.Warning)
.WriteTo.File(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs", "errors", "log-.txt"),
rollingInterval: RollingInterval.Day,
outputTemplate: vOutputTemplate,
retainedFileCountLimit: 100));
var esUrl = hostingContext.Configuration.GetSection("ElasticSearchUrl").Value;
var indexFormat = $"{appName}" + "-{0:yyyy.MM}";
if (!string.IsNullOrWhiteSpace(esUrl))
{
loggerConfiguration.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(esUrl))
{
MinimumLogEventLevel = LogEventLevel.Information,
AutoRegisterTemplate = true,
IndexFormat = indexFormat
});
}
});
}
public static void AddCustomMVC(this WebApplicationBuilder builder)
{
builder.Services.AddControllers()
.AddJsonOptions(options =>
{
//数据格式原样输出
options.JsonSerializerOptions.PropertyNamingPolicy = null;
//取消Unicode编码
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
//允许额外符号
options.JsonSerializerOptions.AllowTrailingCommas = true;
});
builder.Services.AddCors(options =>
{
options.AddPolicy("CorsPolicy", policy =>
{
var withOrigins = builder.Configuration["WithOrigins"];
if (!string.IsNullOrWhiteSpace(withOrigins) && withOrigins.Split(';').Length > 0)
policy.WithOrigins(withOrigins.Split(';'));
else
policy.SetIsOriginAllowed((host) => true);
policy.AllowAnyMethod();
policy.AllowAnyHeader();
policy.AllowCredentials();
});
});
}
public static void AddCustomDbContext(this WebApplicationBuilder builder)
{
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
var vDbType = builder.Configuration["CurrentDbType"];
IocDbType vIocDbType = IocDbType.SqlServer;
switch (vDbType)
{
case "SqlServer":
vIocDbType = IocDbType.SqlServer;
break;
case "MySql":
vIocDbType = IocDbType.MySql;
break;
case "PostgreSQL":
vIocDbType = IocDbType.PostgreSQL;
break;
}
builder.Services.AddSqlSugar(new IocConfig()
{
ConfigId = "EquipmentAPI",
ConnectionString = builder.Configuration[$"DataBase:{vIocDbType}:Database_ConnString"],
DbType = vIocDbType,
IsAutoCloseConnection = true
});
//AOP 统一配置 禁止循环,只能声名一次
builder.Services.ConfigurationSugar(db =>
{
//里面可以循环
db.GetConnection("API").Aop.OnLogExecuting = (sql, p) =>
{
#if DEBUG
//ConsoleColor currentForeColor = Console.ForegroundColor;
//Console.ForegroundColor = ConsoleColor.Blue;
//Console.WriteLine(sql);
//Console.ForegroundColor = currentForeColor;
#endif
};
//里面可以循环
db.GetConnection("API").Aop.OnError = (exp) =>
{
#if DEBUG
ConsoleColor currentForeColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"{exp.Message}:{exp.Sql}");
Console.ForegroundColor = currentForeColor;
#endif
};
});
}
public static void AddCustomSwagger(this WebApplicationBuilder builder)
{
builder.Services.AddSwaggerGen(options =>
{
foreach (FieldInfo fileld in typeof(ApiVersionInfo).GetFields())
{
options.SwaggerDoc(fileld.Name, new OpenApiInfo
{
Version = fileld.Name,
Title = $"API {fileld.Name} 接口文档",
Description = $"API {fileld.Name} 接口文档"
});
}
var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename));
});
}
public static void AddCustomHealthChecks(this WebApplicationBuilder builder)
{
builder.Services.AddHealthChecks()
.AddCheck(appName, () => HealthCheckResult.Healthy())
.AddCheck\x3CDaprHealthCheck>("dapr");
}
}
public class AutofacModule : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
// 定义需要注册的程序集列表
var vAssemblies = new[]
{
Assembly.Load("Domain"),
Assembly.Load("Infrastructure"),
Assembly.Load("Common"),
Assembly.Load("Application")
};
// 注册所有实现了接口的类型,每个依赖关系创建一个新的实例
foreach (var vAssembly in vAssemblies)
{
builder.RegisterAssemblyTypes(vAssembly)
.AsImplementedInterfaces()
.InstancePerDependency();
}
}
}
Program.cs Setup
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("zh-CN", true) { DateTimeFormat = { ShortDatePattern = "yyyy-MM-dd", FullDateTimePattern = "yyyy-MM-dd HH:mm:ss", LongTimePattern = "HH:mm:ss" } };
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure\x3CKestrelServerOptions>(k => k.AllowSynchronousIO = true)
.Configure\x3CIISServerOptions>(k => k.AllowSynchronousIO = true);
var app = builder.Build();
builder.AddCustomDaprdProcess();
builder.AddCustomAutofac();
builder.AddCustomLog();
builder.AddCustomMVC();
builder.AddCustomServices();
builder.AddCustomDbContext();
builder.AddCustomSwagger();
builder.AddCustomHealthChecks();
builder.Services.AddHttpClient();
var appPort = app.Configuration["AppProfile:AppPort"].ToString();
app.Urls.Add($"http://*:{appPort}");
if (app.Environment.IsDevelopment())
{
app.UseSwagger().UseSwaggerUI(s =>
{
foreach (FieldInfo field in typeof(ApiVersionInfo).GetFields())
{
s.SwaggerEndpoint($"/swagger/{field.Name}/swagger.json", $"API {field.Name} 版本");
}
});
}
app.Use(
(context, next) =>
{
context.Request.EnableBuffering();
return next(context);
});
app.UseCloudEvents();
app.UseRouting();
app.UseCors("CorsPolicy");
app.MapDefaultControllerRoute();
app.MapControllers();
app.MapSubscribeHandler();
app.MapCustomHealthChecks();
try
{
app.Logger.LogInformation("==============Starting API WebHost==============");
app.Run();
}
catch (Exception e)
{
app.Logger.LogError(e, "==============Host terminated unexpectedly==============");
}
finally
{
Log.CloseAndFlush();
}
Result Pattern
API Result
// Common/ApiResult.cs
public class BaseResult
{
/// \x3Csummary>
/// 响应码
/// \x3C/summary>
[NotNull]
public virtual HttpStatusCode Code { get; set; }
/// \x3Csummary>
/// 响应成功
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
public virtual void Success()
{
Code = HttpStatusCode.OK;
}
/// \x3Csummary>
/// 响应失败
/// \x3C/summary>
/// \x3Cparam name="message">\x3C/param>
public virtual void Failed()
{
Code = HttpStatusCode.InternalServerError;
}
}
/// \x3Csummary>
/// API返回结果结构
/// \x3C/summary>
public class ApiResult : BaseResult
{
public ApiResult()
{
Success();
}
private string _Message = string.Empty;
private string _Data = string.Empty;
private byte[] _Base64Data;
private string _ModelType = string.Empty;
/// \x3Csummary>
/// 消息提示
/// \x3C/summary>
public string Message { get => _Message; set => _Message = value; }
/// \x3Csummary>
/// 数据源
/// \x3C/summary>
public string Data { get => _Data; set => _Data = value; }
/// \x3Csummary>
/// 数据源模型
/// \x3C/summary>
public string ModelType { get => _ModelType; set => _ModelType = value; }
/// \x3Csummary>
/// Base64数据源
/// \x3C/summary>
public byte[] Base64Data { get => _Base64Data; set => _Base64Data = value; }
/// \x3Csummary>
/// 响应成功
/// \x3C/summary>
/// \x3Cparam name="message">消息\x3C/param>
public void Success(string message)
{
base.Success();
_Message = message;
}
/// \x3Csummary>
/// 响应成功
/// \x3C/summary>
/// \x3Cparam name="data">数据\x3C/param>
public void Success(dynamic data)
{
base.Success();
_Data = JsonSerializer.Serialize(data, new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
});
_ModelType = GetDataType(data);
}
/// \x3Csummary>
/// 响应成功
/// \x3C/summary>
/// \x3Cparam name="data">数据\x3C/param>
/// \x3Cparam name="message">消息\x3C/param>
public void Success(dynamic data, string message)
{
base.Success();
_Message = message;
_Data = JsonSerializer.Serialize(data, new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
});
_ModelType = GetDataType(data);
}
/// \x3Csummary>
/// 响应成功
/// \x3C/summary>
/// \x3Cparam name="dataList">数据\x3C/param>
public void Success\x3CT>(List\x3CT> dataList)
{
base.Success();
if (dataList != null && dataList.Any())
{
_Data = JsonSerializer.Serialize(dataList, new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
});
_ModelType = GetDataType(dataList);
}
else
{
_Data = string.Empty;
_ModelType = string.Empty;
}
}
/// \x3Csummary>
/// 响应成功
/// \x3C/summary>
/// \x3Cparam name="dataList">数据\x3C/param>
/// \x3Cparam name="message">消息\x3C/param>
public void Success\x3CT>(List\x3CT> dataList, string message)
{
base.Success();
_Message = message;
if (dataList != null && dataList.Any())
{
_Data = JsonSerializer.Serialize(dataList, new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
});
_ModelType = GetDataType(dataList);
}
else
{
_Data = string.Empty;
_ModelType = string.Empty;
}
}
/// \x3Csummary>
/// 响应失败
/// \x3C/summary>
/// \x3Cparam name="message">\x3C/param>
public void Failed(string message)
{
base.Failed();
_Message = message;
}
/// \x3Csummary>
/// 响应失败
/// \x3C/summary>
/// \x3Cparam name="ex">\x3C/param>
public void Failed(Exception ex)
{
base.Failed();
_Message = ex.Message.ToString();
}
/// \x3Csummary>
/// 响应失败
/// \x3C/summary>
/// \x3Cparam name="ex">\x3C/param>
public void Failed(HttpStatusCode httpStatusCode, string message)
{
Code = httpStatusCode;
_Message = message;
}
/// \x3Csummary>
/// 成功
/// \x3C/summary>
/// \x3Cparam name="dataSource">数据源\x3C/param>
/// \x3Cparam name="code">状态码\x3C/param>
/// \x3Cparam name="message">消息提示\x3C/param>
/// \x3Cparam name="isSerialize">是否需要序列化\x3C/param>
public static ApiResult Success(dynamic dataSource, string message = "操作成功", HttpStatusCode code = HttpStatusCode.OK, bool isSerialize = true)
{
return new ApiResult(dataSource, code, message, isSerialize);
}
/// \x3Csummary>
/// 成功
/// \x3C/summary>
/// \x3Cparam name="dataSourceList">数据源\x3C/param>
/// \x3Cparam name="code">状态码\x3C/param>
/// \x3Cparam name="message">消息提示\x3C/param>
/// \x3Cparam name="isSerialize">是否需要序列化\x3C/param>
public static ApiResult Success\x3CT>(List\x3CT> dataSourceList, string message = "操作成功", HttpStatusCode code = HttpStatusCode.OK, bool isSerialize = true)
{
if (dataSourceList != null && dataSourceList.Any())
{
return new ApiResult(dataSourceList, code, message, isSerialize);
}
else
{
return new ApiResult(string.Empty, code, message, isSerialize);
}
}
/// \x3Csummary>
/// 失败
/// \x3C/summary>
/// \x3Cparam name="code">状态码\x3C/param>
/// \x3Cparam name="message">消息提示\x3C/param>
public static ApiResult Failed(string message = "操作失败", HttpStatusCode code = HttpStatusCode.InternalServerError)
{
return new ApiResult(string.Empty, code, message, false);
}
/// \x3Csummary>
/// 响应模型
/// \x3C/summary>
/// \x3Cparam name="dataSource">数据源\x3C/param>
/// \x3Cparam name="code">状态码\x3C/param>
/// \x3Cparam name="message">消息提示\x3C/param>
/// \x3Cparam name="isSerialize">是否需要序列化\x3C/param>
private ApiResult(dynamic dataSource, HttpStatusCode code, string message, bool isSerialize)
{
if (dataSource != null && dataSource.GetType() == typeof(byte[]) && !isSerialize)
{
_Base64Data = dataSource;
}
else if (dataSource != null && dataSource?.GetType() != typeof(string) && isSerialize)
{
_Data = JsonSerializer.Serialize(dataSource, new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
NumberHandling = JsonNumberHandling.WriteAsString,
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
});
}
else
{
_Data = dataSource;
}
Code = code;
_Message = message;
_ModelType = GetDataType(dataSource);
}
/// \x3Csummary>
/// 获取返回模型的所有属性
/// \x3C/summary>
/// \x3Cparam name="data">\x3C/param>
/// \x3Creturns>\x3C/returns>
private static string GetDataType(dynamic data)
{
var str = string.Empty;
System.Reflection.PropertyInfo[] properties = data.GetType().GetProperties();
foreach (System.Reflection.PropertyInfo property in properties)
{
string propertyName = property.Name;
string propertyType = property.PropertyType.Name;
str += $"{propertyName} ({propertyType}),";
}
return !string.IsNullOrWhiteSpace(str) ? str[..^1] : str;
}
}
/// \x3Csummary>
/// 泛型类型返回体
/// \x3C/summary>
/// \x3Ctypeparam name="T">\x3C/typeparam>
public class ApiResult\x3CT> : ApiResult
{
/// \x3Csummary>
/// 数据
/// \x3C/summary>
public T TData { get; set; }
/// \x3Csummary>
/// 列表的记录数
/// \x3C/summary>
public int Total { get; set; }
}
Application
// Application/IServices/IBaseService.cs
public interface IBaseService\x3CT> where T : class, new()
{
/// \x3Csummary>
/// 添加
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
bool Insert(T AEntity);
/// \x3Csummary>
/// 添加
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> InsertAsync(T AEntity);
/// \x3Csummary>
/// 批量添加
/// \x3C/summary>
/// \x3Cparam name="AList">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> InsertRangeAsync(List\x3CT> AList);
/// \x3Csummary>
/// 删除
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
bool Delete(T AEntity);
/// \x3Csummary>
/// 删除
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> DeleteAsync(dynamic AId);
/// \x3Csummary>
/// 批量删除
/// \x3C/summary>
/// \x3Cparam name="AIds">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> DeleteByIdsAsync(dynamic[] AIds);
/// \x3Csummary>
/// 更新
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
bool Update(T AEntity);
/// \x3Csummary>
/// 更新
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> UpdateAsync(T AEntity);
/// \x3Csummary>
/// 批量更新
/// \x3C/summary>
/// \x3Cparam name="AList">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> UpdateRangeAsync(List\x3CT> AList);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
T Find(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 根据ID查询
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CT> FindAsync(dynamic AId);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CT> FindAsync(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
List\x3CT> Query();
/// \x3Csummary>
/// 自定义查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> Query(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync();
/// \x3Csummary>
/// 自定义查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 分页查询
/// \x3C/summary>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, string orderByFields, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="whereExpression">\x3C/param>
/// \x3Cparam name="orderByExpression">\x3C/param>
/// \x3Cparam name="order">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> whereExpression, Expression\x3CFunc\x3CT, object>> orderByExpression, OrderByType order, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 开始事务
/// \x3C/summary>
void BeginTran();
/// \x3Csummary>
/// 提交
/// \x3C/summary>
void CommitTran();
/// \x3Csummary>
/// 回滚
/// \x3C/summary>
void RollbackTran();
#region 执行sql
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
DataTable GetDataTable(string sql, object parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
DataTable GetDataTable(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
DataTable GetDataTable(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
Task\x3CDataTable> GetDataTableAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="ASql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
Task\x3CDataTable> GetDataTableAsync(string ASql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
Task\x3CDataTable> GetDataTableAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
DataSet GetDataSetAll(string sql, object parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
DataSet GetDataSetAll(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
DataSet GetDataSetAll(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
Task\x3CDataSet> GetDataSetAllAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
Task\x3CDataSet> GetDataSetAllAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
Task\x3CDataSet> GetDataSetAllAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
IDataReader GetDataReader(string sql, object parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
IDataReader GetDataReader(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
IDataReader GetDataReader(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
Task\x3CIDataReader> GetDataReaderAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
Task\x3CIDataReader> GetDataReaderAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
Task\x3CIDataReader> GetDataReaderAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
object GetScalar(string sql, object parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
object GetScalar(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
object GetScalar(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
Task\x3Cobject> GetScalarAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
Task\x3Cobject> GetScalarAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
Task\x3Cobject> GetScalarAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommandWithGo(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommand(string sql, object parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommand(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommand(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
Task\x3Cint> ExecuteCommandAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
Task\x3Cint> ExecuteCommandAsync(string sql, object parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
Task\x3Cint> ExecuteCommandAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> SqlQuery\x3CT>(string sql, object parameters = null);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> SqlQuery\x3CT>(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> SqlQuery\x3CT>(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, object parameters = null);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="whereObj">\x3C/param>
/// \x3Creturns>\x3C/returns>
T SqlQuerySingle\x3CT>(string sql, object whereObj = null);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
T SqlQuerySingle\x3CT>(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
T SqlQuerySingle\x3CT>(string sql, List\x3CSugarParameter> parameters);
#endregion
}
// Application/IServices/ITestService.cs
public interface ITestService : IBaseService\x3CTest>
{
}
// Application/IServices/BaseService.cs.cs
public class BaseService\x3CT> : IBaseService\x3CT> where T : class, new()
{
protected IBaseRepository\x3CT> _BaseRepository;
public bool Delete(T AEntity)
{
return _BaseRepository.Delete(AEntity);
}
public async Task\x3Cbool> DeleteAsync(dynamic AId)
{
return await _BaseRepository.DeleteAsync(AId);
}
public async Task\x3Cbool> DeleteByIdsAsync(dynamic[] AIds)
{
return await _BaseRepository.DeleteByIdsAsync(AIds);
}
public T Find(Expression\x3CFunc\x3CT, bool>> func)
{
return _BaseRepository.Find(func);
}
public async Task\x3CT> FindAsync(dynamic AId)
{
return await _BaseRepository.FindAsync(AId);
}
public async Task\x3CT> FindAsync(Expression\x3CFunc\x3CT, bool>> func)
{
return await _BaseRepository.FindAsync(func);
}
public bool Insert(T AEntity)
{
return _BaseRepository.Insert(AEntity);
}
public async Task\x3Cbool> InsertAsync(T AEntity)
{
return await _BaseRepository.InsertAsync(AEntity);
}
public async Task\x3Cbool> InsertRangeAsync(List\x3CT> AList)
{
return await _BaseRepository.InsertRangeAsync(AList); ;
}
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
public List\x3CT> Query()
{
return _BaseRepository.Query();
}
/// \x3Csummary>
/// 自定义查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> Query(Expression\x3CFunc\x3CT, bool>> func)
{
return _BaseRepository.Query(func);
}
public async Task\x3CList\x3CT>> QueryAsync()
{
return await _BaseRepository.QueryAsync();
}
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func)
{
return await _BaseRepository.QueryAsync(func);
}
public async Task\x3CList\x3CT>> QueryAsync(int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await _BaseRepository.QueryAsync(APageIndex, APageSize, ATotal);
}
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await _BaseRepository.QueryAsync(func, APageIndex, APageSize, ATotal);
}
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, string orderByFields, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await _BaseRepository.QueryAsync(func, orderByFields, APageIndex, APageSize, ATotal);
}
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="whereExpression">\x3C/param>
/// \x3Cparam name="orderByExpression">\x3C/param>
/// \x3Cparam name="order">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> whereExpression, Expression\x3CFunc\x3CT, object>> orderByExpression, OrderByType order, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await _BaseRepository.QueryAsync(whereExpression, orderByExpression, order, APageIndex, APageSize, ATotal);
}
public bool Update(T AEntity)
{
return _BaseRepository.Update(AEntity);
}
public async Task\x3Cbool> UpdateAsync(T AEntity)
{
return await _BaseRepository.UpdateAsync(AEntity);
}
public async Task\x3Cbool> UpdateRangeAsync(List\x3CT> AList)
{
return await _BaseRepository.UpdateRangeAsync(AList);
}
/// \x3Csummary>
/// 开始事务
/// \x3C/summary>
/// \x3Cexception cref="NotImplementedException">\x3C/exception>
public void BeginTran()
{
_BaseRepository.BeginTran();
}
/// \x3Csummary>
/// 提交事务
/// \x3C/summary>
/// \x3Cexception cref="NotImplementedException">\x3C/exception>
public void CommitTran()
{
_BaseRepository.CommitTran();
}
/// \x3Csummary>
/// 回滚事务
/// \x3C/summary>
/// \x3Cexception cref="NotImplementedException">\x3C/exception>
public void RollbackTran()
{
_BaseRepository.RollbackTran();
}
#region 执行sql
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public DataTable GetDataTable(string sql, object parameters)
{
return _BaseRepository.GetDataTable(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public DataTable GetDataTable(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.GetDataTable(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public DataTable GetDataTable(string sql, List\x3CSugarParameter> parameters)
{
return _BaseRepository.GetDataTable(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public async Task\x3CDataTable> GetDataTableAsync(string sql, object parameters)
{
return await _BaseRepository.GetDataTableAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="ASql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public async Task\x3CDataTable> GetDataTableAsync(string ASql, params SugarParameter[] parameters)
{
return await _BaseRepository.GetDataTableAsync(ASql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public async Task\x3CDataTable> GetDataTableAsync(string sql, List\x3CSugarParameter> parameters)
{
return await _BaseRepository.GetDataTableAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public DataSet GetDataSetAll(string sql, object parameters)
{
return _BaseRepository.GetDataSetAll(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public DataSet GetDataSetAll(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.GetDataSetAll(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public DataSet GetDataSetAll(string sql, List\x3CSugarParameter> parameters)
{
return _BaseRepository.GetDataSetAll(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public async Task\x3CDataSet> GetDataSetAllAsync(string sql, object parameters)
{
return await _BaseRepository.GetDataSetAllAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public async Task\x3CDataSet> GetDataSetAllAsync(string sql, params SugarParameter[] parameters)
{
return await _BaseRepository.GetDataSetAllAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public async Task\x3CDataSet> GetDataSetAllAsync(string sql, List\x3CSugarParameter> parameters)
{
return await _BaseRepository.GetDataSetAllAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public IDataReader GetDataReader(string sql, object parameters)
{
return _BaseRepository.GetDataReader(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public IDataReader GetDataReader(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.GetDataReader(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public IDataReader GetDataReader(string sql, List\x3CSugarParameter> parameters)
{
return _BaseRepository.GetDataReader(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public async Task\x3CIDataReader> GetDataReaderAsync(string sql, object parameters)
{
return await _BaseRepository.GetDataReaderAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public async Task\x3CIDataReader> GetDataReaderAsync(string sql, params SugarParameter[] parameters)
{
return await _BaseRepository.GetDataReaderAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public async Task\x3CIDataReader> GetDataReaderAsync(string sql, List\x3CSugarParameter> parameters)
{
return await _BaseRepository.GetDataReaderAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public object GetScalar(string sql, object parameters)
{
return _BaseRepository.GetScalar(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public object GetScalar(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.GetScalar(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public object GetScalar(string sql, List\x3CSugarParameter> parameters)
{
return _BaseRepository.GetScalar(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public async Task\x3Cobject> GetScalarAsync(string sql, object parameters)
{
return await _BaseRepository.GetScalarAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public async Task\x3Cobject> GetScalarAsync(string sql, params SugarParameter[] parameters)
{
return await _BaseRepository.GetScalarAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public async Task\x3Cobject> GetScalarAsync(string sql, List\x3CSugarParameter> parameters)
{
return await _BaseRepository.GetScalarAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommandWithGo(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.ExecuteCommandWithGo(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommand(string sql, object parameters)
{
return _BaseRepository.ExecuteCommand(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommand(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.ExecuteCommand(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommand(string sql, List\x3CSugarParameter> parameters)
{
return _BaseRepository.ExecuteCommand(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public async Task\x3Cint> ExecuteCommandAsync(string sql, params SugarParameter[] parameters)
{
return await _BaseRepository.ExecuteCommandAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public async Task\x3Cint> ExecuteCommandAsync(string sql, object parameters)
{
return await _BaseRepository.ExecuteCommandAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public async Task\x3Cint> ExecuteCommandAsync(string sql, List\x3CSugarParameter> parameters)
{
return await _BaseRepository.ExecuteCommandAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> SqlQuery\x3CT>(string sql, object parameters = null)
{
return _BaseRepository.SqlQuery\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> SqlQuery\x3CT>(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.SqlQuery\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> SqlQuery\x3CT>(string sql, List\x3CSugarParameter> parameters)
{
return _BaseRepository.SqlQuery\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, object parameters = null)
{
return await _BaseRepository.SqlQueryAsync\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, List\x3CSugarParameter> parameters)
{
return await _BaseRepository.SqlQueryAsync\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, params SugarParameter[] parameters)
{
return await _BaseRepository.SqlQueryAsync\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="whereObj">\x3C/param>
/// \x3Creturns>\x3C/returns>
public T SqlQuerySingle\x3CT>(string sql, object whereObj = null)
{
return _BaseRepository.SqlQuerySingle\x3CT>(sql, whereObj);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public T SqlQuerySingle\x3CT>(string sql, params SugarParameter[] parameters)
{
return _BaseRepository.SqlQuerySingle\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public T SqlQuerySingle\x3CT>(string sql, List\x3CSugarParameter> parameters)
{
return _BaseRepository.SqlQuerySingle\x3CT>(sql, parameters);
}
#endregion
}
// Application/Services/TestService.cs
public class TestService : BaseService\x3CTest>, ITestService
{
private readonly ITestRepository _Repository;
public TestService(ITestRepository repository)
{
base._BaseRepository = repository;
_Repository = repository;
}
}
Domain
// Domain/SeedWork/BaseEntity.cs
/// \x3Csummary>
/// 实体基类
/// \x3C/summary>
public class BaseEntity
{
/// \x3Csummary>
/// 是否标记删除
/// \x3C/summary>
public bool IsDelete { get; set; } = false;
/// \x3Csummary>
/// 创建时间
/// \x3C/summary>
public DateTime CreateDateTime { get; set; } = DateTime.Now;
/// \x3Csummary>
/// 最后修改时间
/// \x3C/summary>
public DateTime LastupdateDateTime { get; set; } = DateTime.Now;
}
// Domain/Models/Test.cs
/// \x3Csummary>
///
/// \x3C/summary>
[SugarTable("t_test")]
public class Test : BaseEntity
{
/// \x3Csummary>
/// 主键ID
/// \x3C/summary>
[SugarColumn(IsPrimaryKey = true, ColumnDescription = "主键")]
public long Id { get; set; }
}
// Domain/SeedWork/IBaseRepository.cs
/// \x3Csummary>
/// 仓储基类接口
/// \x3C/summary>
/// \x3Ctypeparam name="T">\x3C/typeparam>
public interface IBaseRepository\x3CT> where T : class, new()
{
/// \x3Csummary>
/// 添加
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
bool Insert(T AEntity);
/// \x3Csummary>
/// 添加
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> InsertAsync(T AEntity);
/// \x3Csummary>
/// 批量添加
/// \x3C/summary>
/// \x3Cparam name="AList">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> InsertRangeAsync(List\x3CT> AList);
/// \x3Csummary>
/// 删除
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
bool Delete(T AEntity);
/// \x3Csummary>
/// 删除
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> DeleteAsync(dynamic AId);
/// \x3Csummary>
/// 批量删除
/// \x3C/summary>
/// \x3Cparam name="AIds">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> DeleteByIdsAsync(dynamic[] AIds);
/// \x3Csummary>
/// 更新
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
bool Update(T AEntity);
/// \x3Csummary>
/// 更新
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> UpdateAsync(T AEntity);
/// \x3Csummary>
/// 批量更新
/// \x3C/summary>
/// \x3Cparam name="AList">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3Cbool> UpdateRangeAsync(List\x3CT> AList);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
T Find(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 根据ID查询
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CT> FindAsync(dynamic AId);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CT> FindAsync(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
List\x3CT> Query();
/// \x3Csummary>
/// 自定义查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> Query(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync();
/// \x3Csummary>
/// 自定义查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func);
/// \x3Csummary>
/// 分页查询
/// \x3C/summary>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, string orderByFields, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="whereExpression">\x3C/param>
/// \x3Cparam name="orderByExpression">\x3C/param>
/// \x3Cparam name="order">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> whereExpression, Expression\x3CFunc\x3CT, object>> orderByExpression, OrderByType order, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal);
/// \x3Csummary>
/// 开始事务
/// \x3C/summary>
void BeginTran();
/// \x3Csummary>
/// 提交
/// \x3C/summary>
void CommitTran();
/// \x3Csummary>
/// 回滚
/// \x3C/summary>
void RollbackTran();
#region 执行sql
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
DataTable GetDataTable(string sql, object parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
DataTable GetDataTable(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
DataTable GetDataTable(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
Task\x3CDataTable> GetDataTableAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="ASql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
Task\x3CDataTable> GetDataTableAsync(string ASql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
Task\x3CDataTable> GetDataTableAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
DataSet GetDataSetAll(string sql, object parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
DataSet GetDataSetAll(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
DataSet GetDataSetAll(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
Task\x3CDataSet> GetDataSetAllAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
Task\x3CDataSet> GetDataSetAllAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
Task\x3CDataSet> GetDataSetAllAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
IDataReader GetDataReader(string sql, object parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
IDataReader GetDataReader(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
IDataReader GetDataReader(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
Task\x3CIDataReader> GetDataReaderAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
Task\x3CIDataReader> GetDataReaderAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
Task\x3CIDataReader> GetDataReaderAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
object GetScalar(string sql, object parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
object GetScalar(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
object GetScalar(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
Task\x3Cobject> GetScalarAsync(string sql, object parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
Task\x3Cobject> GetScalarAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
Task\x3Cobject> GetScalarAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommandWithGo(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommand(string sql, object parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommand(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
int ExecuteCommand(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
Task\x3Cint> ExecuteCommandAsync(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
Task\x3Cint> ExecuteCommandAsync(string sql, object parameters);
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
Task\x3Cint> ExecuteCommandAsync(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> SqlQuery\x3CT>(string sql, object parameters = null);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> SqlQuery\x3CT>(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
List\x3CT> SqlQuery\x3CT>(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, object parameters = null);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, List\x3CSugarParameter> parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
T SqlQuerySingle\x3CT>(string sql, object whereObj = null);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
T SqlQuerySingle\x3CT>(string sql, params SugarParameter[] parameters);
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
T SqlQuerySingle\x3CT>(string sql, List\x3CSugarParameter> parameters);
#endregion
}
// Domain/Repositories/ITestRepository.cs
public interface ITestRepository: IBaseRepository\x3CTest>
{
}
Infrastructure
// Infrastructure/Repositories/BaseRepository.cs
public class BaseRepository\x3CT> : SimpleClient\x3CT>, IBaseRepository\x3CT> where T : class, new()
{
public BaseRepository(ISqlSugarClient context = null) : base(context)
{
base.Context = DbScoped.SugarScope;
}
/// \x3Csummary>
/// 根据ID删除数据
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3Cbool> DeleteAsync(dynamic AId)
{
return await DeleteByIdAsync(AId);
}
/// \x3Csummary>
/// 批量删除
/// \x3C/summary>
/// \x3Cparam name="AIds">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3Cbool> DeleteByIdsAsync(dynamic[] AIds)
{
return await base.DeleteByIdsAsync(AIds);
}
/// \x3Csummary>
/// 根据ID查询数据
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
public virtual async Task\x3CT> FindAsync(dynamic AId)
{
return await GetByIdAsync(AId);
}
/// \x3Csummary>
/// 根据ID查询
/// \x3C/summary>
/// \x3Cparam name="AId">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CT> FindAsync(Expression\x3CFunc\x3CT, bool>> func)
{
return await GetSingleAsync(func);
}
/// \x3Csummary>
/// 添加
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3Cbool> InsertAsync(T AEntity)
{
return await base.InsertAsync(AEntity);
}
/// \x3Csummary>
/// 批量添加
/// \x3C/summary>
/// \x3Cparam name="AList">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3Cbool> InsertRangeAsync(List\x3CT> AList)
{
return await base.InsertRangeAsync(AList);
}
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
public List\x3CT> Query()
{
return base.GetList();
}
/// \x3Csummary>
/// 自定义查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> Query(Expression\x3CFunc\x3CT, bool>> func)
{
return base.GetList(func);
}
/// \x3Csummary>
/// 查询
/// \x3C/summary>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync()
{
return await base.GetListAsync();
}
/// \x3Csummary>
/// 自定义条件查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func)
{
return await base.GetListAsync(func);
}
/// \x3Csummary>
/// 分页查询
/// \x3C/summary>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync(int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await base.Context.Queryable\x3CT>().ToPageListAsync(APageIndex, APageSize, ATotal);
}
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await base.Context.Queryable\x3CT>().Where(func).ToPageListAsync(APageIndex, APageSize, ATotal);
}
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> func, string orderByFields, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await base.Context.Queryable\x3CT>().Where(func).OrderBy(orderByFields).ToPageListAsync(APageIndex, APageSize, ATotal);
}
/// \x3Csummary>
/// 自定义条件分页查询
/// \x3C/summary>
/// \x3Cparam name="whereExpression">\x3C/param>
/// \x3Cparam name="orderByExpression">\x3C/param>
/// \x3Cparam name="order">\x3C/param>
/// \x3Cparam name="APageIndex">\x3C/param>
/// \x3Cparam name="APageSize">\x3C/param>
/// \x3Cparam name="ATotal">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> QueryAsync(Expression\x3CFunc\x3CT, bool>> whereExpression, Expression\x3CFunc\x3CT, object>> orderByExpression, OrderByType order, int APageIndex, int APageSize, RefAsync\x3Cint> ATotal)
{
return await base.Context.Queryable\x3CT>().Where(whereExpression).OrderBy(orderByExpression, order).ToPageListAsync(APageIndex, APageSize, ATotal);
}
/// \x3Csummary>
/// 更新
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3Cbool> UpdateAsync(T AEntity)
{
return await base.UpdateAsync(AEntity);
}
/// \x3Csummary>
/// 批量修改
/// \x3C/summary>
/// \x3Cparam name="AList">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3Cbool> UpdateRangeAsync(List\x3CT> AList)
{
return await base.UpdateRangeAsync(AList);
}
/// \x3Csummary>
/// 插入
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
public bool Insert(T AEntity)
{
return base.Insert(AEntity);
}
/// \x3Csummary>
/// 删除
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
public bool Delete(T AEntity)
{
return base.Delete(AEntity);
}
/// \x3Csummary>
/// 更新
/// \x3C/summary>
/// \x3Cparam name="AEntity">\x3C/param>
/// \x3Creturns>\x3C/returns>
public bool Update(T AEntity)
{
return base.Update(AEntity);
}
/// \x3Csummary>
/// 查询数据
/// \x3C/summary>
/// \x3Cparam name="func">\x3C/param>
/// \x3Creturns>\x3C/returns>
public T Find(Expression\x3CFunc\x3CT, bool>> func)
{
return base.GetFirst(func);
}
/// \x3Csummary>
/// 开始事务
/// \x3C/summary>
/// \x3Cexception cref="NotImplementedException">\x3C/exception>
public void BeginTran()
{
base.Context.Ado.BeginTran();
}
/// \x3Csummary>
/// 提交事务
/// \x3C/summary>
/// \x3Cexception cref="NotImplementedException">\x3C/exception>
public void CommitTran()
{
base.Context.Ado.CommitTran();
}
/// \x3Csummary>
/// 回滚事务
/// \x3C/summary>
/// \x3Cexception cref="NotImplementedException">\x3C/exception>
public void RollbackTran()
{
base.Context.Ado.RollbackTran();
}
#region 执行sql
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public DataTable GetDataTable(string sql, object parameters)
{
return base.Context.Ado.GetDataTable(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public DataTable GetDataTable(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.GetDataTable(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public DataTable GetDataTable(string sql, List\x3CSugarParameter> parameters)
{
return base.Context.Ado.GetDataTable(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public async Task\x3CDataTable> GetDataTableAsync(string sql, object parameters)
{
return await base.Context.Ado.GetDataTableAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="ASql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public async Task\x3CDataTable> GetDataTableAsync(string ASql, params SugarParameter[] parameters)
{
return await base.Context.Ado.GetDataTableAsync(ASql, parameters);
}
/// \x3Csummary>
/// 获取DataTable数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataTable\x3C/returns>
public async Task\x3CDataTable> GetDataTableAsync(string sql, List\x3CSugarParameter> parameters)
{
return await base.Context.Ado.GetDataTableAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public DataSet GetDataSetAll(string sql, object parameters)
{
return base.Context.Ado.GetDataSetAll(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public DataSet GetDataSetAll(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.GetDataSetAll(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public DataSet GetDataSetAll(string sql, List\x3CSugarParameter> parameters)
{
return base.Context.Ado.GetDataSetAll(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public async Task\x3CDataSet> GetDataSetAllAsync(string sql, object parameters)
{
return await base.Context.Ado.GetDataSetAllAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public async Task\x3CDataSet> GetDataSetAllAsync(string sql, params SugarParameter[] parameters)
{
return await base.Context.Ado.GetDataSetAllAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataSet数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>DataSet\x3C/returns>
public async Task\x3CDataSet> GetDataSetAllAsync(string sql, List\x3CSugarParameter> parameters)
{
return await base.Context.Ado.GetDataSetAllAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public IDataReader GetDataReader(string sql, object parameters)
{
return base.Context.Ado.GetDataReader(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public IDataReader GetDataReader(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.GetDataReader(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public IDataReader GetDataReader(string sql, List\x3CSugarParameter> parameters)
{
return base.Context.Ado.GetDataReader(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public async Task\x3CIDataReader> GetDataReaderAsync(string sql, object parameters)
{
return await base.Context.Ado.GetDataReaderAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public async Task\x3CIDataReader> GetDataReaderAsync(string sql, params SugarParameter[] parameters)
{
return await base.Context.Ado.GetDataReaderAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取DataReader数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>IDataReader\x3C/returns>
public async Task\x3CIDataReader> GetDataReaderAsync(string sql, List\x3CSugarParameter> parameters)
{
return await base.Context.Ado.GetDataReaderAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public object GetScalar(string sql, object parameters)
{
return base.Context.Ado.GetScalar(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public object GetScalar(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.GetScalar(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public object GetScalar(string sql, List\x3CSugarParameter> parameters)
{
return base.Context.Ado.GetScalar(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public async Task\x3Cobject> GetScalarAsync(string sql, object parameters)
{
return await base.Context.Ado.GetScalarAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public async Task\x3Cobject> GetScalarAsync(string sql, params SugarParameter[] parameters)
{
return await base.Context.Ado.GetScalarAsync(sql, parameters);
}
/// \x3Csummary>
/// 获取object数据
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>object\x3C/returns>
public async Task\x3Cobject> GetScalarAsync(string sql, List\x3CSugarParameter> parameters)
{
return await base.Context.Ado.GetScalarAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommandWithGo(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.ExecuteCommandWithGo(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommand(string sql, object parameters)
{
return base.Context.Ado.ExecuteCommand(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommand(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.ExecuteCommand(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public int ExecuteCommand(string sql, List\x3CSugarParameter> parameters)
{
return base.Context.Ado.ExecuteCommand(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public async Task\x3Cint> ExecuteCommandAsync(string sql, params SugarParameter[] parameters)
{
return await base.Context.Ado.ExecuteCommandAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public async Task\x3Cint> ExecuteCommandAsync(string sql, object parameters)
{
return await base.Context.Ado.ExecuteCommandAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行sql返回整型
/// \x3C/summary>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>int\x3C/returns>
public async Task\x3Cint> ExecuteCommandAsync(string sql, List\x3CSugarParameter> parameters)
{
return await base.Context.Ado.ExecuteCommandAsync(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> SqlQuery\x3CT>(string sql, object parameters = null)
{
return base.Context.Ado.SqlQuery\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> SqlQuery\x3CT>(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.SqlQuery\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public List\x3CT> SqlQuery\x3CT>(string sql, List\x3CSugarParameter> parameters)
{
return base.Context.Ado.SqlQuery\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, object parameters = null)
{
return await base.Context.Ado.SqlQueryAsync\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, List\x3CSugarParameter> parameters)
{
return await base.Context.Ado.SqlQueryAsync\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public async Task\x3CList\x3CT>> SqlQueryAsync\x3CT>(string sql, params SugarParameter[] parameters)
{
return await base.Context.Ado.SqlQueryAsync\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="whereObj">\x3C/param>
/// \x3Creturns>\x3C/returns>
public T SqlQuerySingle\x3CT>(string sql, object whereObj = null)
{
return base.Context.Ado.SqlQuerySingle\x3CT>(sql, whereObj);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public T SqlQuerySingle\x3CT>(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.SqlQuerySingle\x3CT>(sql, parameters);
}
/// \x3Csummary>
/// 执行SQL返回自定义实体
/// \x3C/summary>
/// \x3Ctypeparam name="T">实体对象\x3C/typeparam>
/// \x3Cparam name="sql">\x3C/param>
/// \x3Cparam name="parameters">\x3C/param>
/// \x3Creturns>\x3C/returns>
public T SqlQuerySingle\x3CT>(string sql, List\x3CSugarParameter> parameters)
{
return base.Context.Ado.SqlQuerySingle\x3CT>(sql, parameters);
}
#endregion
}
// Infrastructure/Repositories/TestRepository.cs
public class TestRepository : BaseRepository\x3CTest>, ITestRepository
{
}
Usage Guidance
This is an instruction-only skill that provides Dapr + .NET architecture guidance and code snippets — it is internally consistent. Before using it, review the SKILL.md yourself: 1) verify any commands or helper calls (e.g., AddDaprdProcess/BaseHelper) will be run in a safe development environment and won't spawn unexpected processes; 2) replace localhost/example credentials with safe values and never paste real production secrets into config snippets; 3) if you plan to let an agent apply these instructions, run it in a sandbox or dev cluster so it cannot touch production resources; and 4) because the skill's source is unknown, prefer manual review of the snippets before executing them.
Capability Analysis
Type: OpenClaw Skill
Name: dapr-dotnet
Version: 1.0.1
The skill bundle is a legitimate development template for building .NET microservices using Dapr, SqlSugar, and Serilog. It provides a standard project structure and boilerplate code for controllers, services, and repositories. While it includes methods for raw SQL execution in 'BaseRepository.cs' and a potentially broad CORS policy in 'ProgramExtensions.cs', these are common architectural features or configuration flaws rather than evidence of malicious intent. No indicators of data exfiltration, unauthorized execution, or malicious prompt injection were found.
Capability Assessment
Purpose & Capability
Name and description (Dapr + .NET backend expertise) match the SKILL.md content: project structure, YAML config for Dapr components, and C# code samples for typical microservice patterns.
Instruction Scope
SKILL.md contains architecture guidance, YAML and C# snippets, and recommendations for running a Dapr sidecar. It does not instruct reading unrelated system files, exfiltrating data, or accessing secrets beyond typical local dev config files (.dapr components/config). It does reference a helper (BaseHelper.AddDaprdProcess) that would start a process if implemented, which is expected for local Dapr debugging.
Install Mechanism
No install spec is present (instruction-only). Nothing will be written to disk by an installer; therefore there is no download or package-install risk from the skill itself.
Credentials
The skill declares no required environment variables or credentials. The included sample configs use local endpoints (localhost) and empty passwords; nothing in the skill requests unrelated cloud credentials or secrets.
Persistence & Privilege
Skill is user-invocable, not always-enabled, and allows model invocation (the platform default). It does not request persistent presence or system-wide config changes.
How to Use
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install dapr-dotnet - After installation, invoke the skill by name or use
/dapr-dotnet - Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.1
No changes detected in this version.
v1.0.0
dapr-dotnet 1.0.0
- Initial release of dapr-dotnet backend expert skill, focused on Dapr and .NET7/8/9 for system architecture, technical problem solving, and backend service optimization.
- Provides best practice guidance and code examples for ASP.NET Core microservices, including common project structure, API patterns, and result handling.
- Covers setup for essential dependencies and middleware such as Swagger, JWT Auth, SqlSugar, Serilog, and CORS.
- Includes detailed definitions for backend development, system architecture, performance optimization, and expert workflow.
Metadata
Frequently Asked Questions
What is dapr-dotnet?
Expertise in backend development using Dapr and .NET7/8/9 to design, build, and optimize high-performance, maintainable microservice architectures. It is an AI Agent Skill for Claude Code / OpenClaw, with 335 downloads so far.
How do I install dapr-dotnet?
Run "/install dapr-dotnet" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is dapr-dotnet free?
Yes, dapr-dotnet is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does dapr-dotnet support?
dapr-dotnet is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created dapr-dotnet?
It is built and maintained by WesLon (@weslon1987); the current version is v1.0.1.
More Skills