Resolves common mooSQL issues including connection config, entity mapping, dialect, transactions, and performance. Use when debugging mooSQL, configuring connections, or optimizing queries.
var dbInstance = new DBInstance
{
ConnectionString = "Server=localhost;Database=test;User Id=sa;Password=123456;",
DatabaseType = DataBaseType.MSSQL
};
var config = new DBConfig
{
Position = 0,
ConnectionString = "...",
DatabaseType = DataBaseType.MySQL
};
DBInsCash.Register(config);
public class User
{
[Column("user_id")]
public int Id { get; set; }
[Column("user_name")]
public string Name { get; set; }
}
public class User
{
[Identity]
public int Id { get; set; }
public string Name { get; set; }
}
var db1 = DBInsCash.Get(0); // 主库
var db2 = DBInsCash.Get(1); // 从库
var builder1 = db1.useSQL();
var builder2 = db2.useSQL();
默认参数化,防 SQL 注入:
builder.where("name", "John"); // 自动参数化 -> WHERE name = @p0
builder.where("name", "John", paramed: true); // 显式参数化
builder.where("name", "John", paramed: false); // 非参数化(慎用)
toSelect() 查看生成 SQLinsertList/批量,勿循环单条builder.print(sql => Console.WriteLine(sql)).select("*").from("users").query<User>();
repo.print(sql => logger.Debug(sql)).GetList();
foreach (var para in builder.ps)
{
Console.WriteLine($"{para.Key} = {para.Value}");
}
var sqlCmd = builder.select("*").from("users").where("id", 1).toSelect();
Console.WriteLine(sqlCmd.SQL);
Console.WriteLine(string.Join(", ", sqlCmd.paras.Keys));
using (var builder = db.useSQL())
{
var result = builder.query<User>();
}
using (var uow = db.useWork())
{
// ...
uow.Commit();
}
try
{
var result = builder.query<User>();
}
catch (Exception ex)
{
logger.Error(ex, "查询用户失败");
throw;
}
public class CustomDialect : Dialect
{
// 实现自定义方言逻辑
}
public class CustomRepository<T> : SooRepository<T> where T : class, new()
{
// 扩展仓储功能
}
public static class SQLBuilderExtensions
{
public static SQLBuilder customMethod(this SQLBuilder builder)
{
return builder;
}
}