Английский | Китайский
SqlSugar — это бесплатная и открытая ORM-библиотека для .NET, поддерживаемая и обновляемая командой Fructose Big Data Technology. Самая простая в использовании ORM-библиотека из коробки.
Преимущества: [Минимальный код] [Высокая производительность] [Супер простота] [Полноценные функции] [Совместимость с несколькими базами данных] [Подходит для продуктов]
.NET Framework, .NET Core 3.1, .NET 5, .NET 6, .NET 7, .NET 8, .NET 9, .NET 10
MySql, SqlServer, Sqlite, Oracle, postgresql, Damien, Zhongjian (рекомендуется для китайского рынка), Shengtong, Hanggao, Access, DB2, DuckDb, Hana, OceanBase, TDengine, QuestDb, Clickhouse, MySqlConnector, Huawei GaussDB, Nanjing University of Science and Technology GBase, MariaDB, TiDB, Odbc, Percona Server, Amazon Aurora, Azure Database for MySQL, Google Cloud SQL for MySQL, custom database## Описание
Другое | Выбор | Вставка | Обновление | Удаление |
---|---|---|---|---|
Nuget | Запрос | Вставка | Обновление | Удаление |
Начальный гайд | Запрос с соединением | Вставка без сущности | Обновление без сущности | Удаление без сущности |
Работа с несколькими базами данных | Запрос с соединением | com/DotNetNext/SqlSugar/wiki/1. 6-Query%E2%80%90Include">Запрос с включением | Вставка с включением | Обновление с включением |
Китайская документация | Запрос между базами данных | Вставка по JSON | Обновление по JSON | Удаление по JSON |
Очень простой синтаксис запроса |
var query = db.Queryable<Order>()
.LeftJoin<Custom>((o, cus) => o.CustomId == cus.Id)
.LeftJoin<OrderItem>((o, cus, oritem) => o.Id == oritem.OrderId)
.LeftJoin<OrderItem>((o, cus, oritem, oritem2) => o.Id == oritem2.OrderId)
.Where(o => o.Id == 1)
.Select((o, cus) => new ViewOrder { Id = o.Id, CustomName = cus.Name })
.ToList();
SELECT
[o].[Id] AS [Id],
[cus].[Name] AS [CustomName]
FROM
[Order] o
LEFT JOIN [Custom] cus ON ([o].[CustomId] = [cus].[Id])
LEFT JOIN [OrderDetail] oritem ON ([o].[Id] = [oritem].[OrderId])
LEFT JOIN [OrderDetail] oritem2 ON ([o].[Id] = [oritem2].[OrderId])
WHERE
([o].[Id] = @Id0)
//Include
var list = db.Queryable<Test>()
.Includes(x => x.Provinces, x => x.Citys, x => x.Street) //множественный уровень
.Includes(x => x.ClassInfo)
.ToList();
//Include + left join
var list5 = db.Queryable<Student_004>()
.Includes(x => x.school_001, x => x.rooms)
.Includes(x => x.books)
.LeftJoin<Order>((x, y) => x.Id == y.sid)
.Select((x, y) => new Student_004DTO
{
SchoolId = x.SchoolId,
books = x.books,
school_001 = x.school_001,
Name = y.Name
})
.ToList();
int pageIndex = 1;
int pageSize = 20;
int totalCount = 0;
var page = db.Queryable<Student>().ToPageList(pageIndex, pageSize, ref totalCount);
var names = new string[] { "a", "b" };
Expressionable<Order> exp = new Expressionable<Order>();
foreach (var item in names)
{
exp.Or(it => it.Name.Contains(item.ToString()));
}
var list = db.Queryable<Order>().Where(exp.ToExpression()).ToList();
SELECT [Id], [Name], [Price], [CreateTime], [CustomId]
FROM [Order]
WHERE (
([Name] LIKE '%' + CAST(@MethodConst0 AS NVARCHAR(MAX)) + '%') OR
([Name] LIKE '%' + CAST(@MethodConst1 AS NVARCHAR(MAX)) + '%')
)
// Создание объекта базы данных
SqlSugarClient db = new SqlSugarClient(new List<ConnectionConfig>()
{
new ConnectionConfig(){ ConfigId="0", DbType=DbType.SqlServer, ConnectionString=Config.ConnectionString, IsAutoCloseConnection=true },
new ConnectionConfig(){ ConfigId="1", DbType=DbType.MySql, ConnectionString=Config.ConnectionString4, IsAutoCloseConnection=true}
});
var mysqldb = db.GetConnection("1"); // mysql db
var sqlServerdb = db.GetConnection("0"); // sqlserver db
```db.BeginTran();
mysqldb.Insertable(new Order()
{
CreateTime = DateTime.Now,
CustomId = 1,
Name = "a",
Price = 1
}).ExecuteCommand();
mysqldb.Queryable<Order>().ToList();
sqlServerdb.Queryable<Order>().ToList();
db.CommitTran();
Реализация транзакций через методы
public static SqlSugarScope Db = new SqlSugarScope(new ConnectionConfig()
{
DbType = SqlSugar.DbType.SqlServer,
ConnectionString = Config.ConnectionString,
IsAutoCloseConnection = true
},
db => {
db.Aop.OnLogExecuting = (s, p) =>
{
Console.WriteLine(s);
};
});
using (var tran = Db.UseTran())
{
new Test2().Insert(XX);
new Test1().Insert(XX);
...
tran.CommitTran();
}
// Установка фильтра
db.QueryFilter.Add(new TableFilterItem<Order>(it => it.Name.Contains("a")));
db.Queryable<Order>().ToList();
// SELECT [Id],[Name],[Price],[CreateTime],[CustomId] FROM [Order] WHERE ([Name] like '%'+@MethodConst0+'%')
db.Queryable<OrderItem, Order>((i, o) => i.OrderId == o.Id)
.Where(i => i.OrderId != 0)
.Select("i.*").ToList();
// SELECT i.* FROM [OrderDetail] i, [Order] o WHERE ([i].[OrderId] = [o].[Id]) AND ([i].[OrderId] <> @OrderId0) AND ([o].[Name] like '%'+@MethodConst1+'%')
вставить или обновить
Db.Storageable(list2).ExecuteCommand();
Db.Storageable(list2).PageSize(1000).ExecuteCommand();
Db.Storageable(list2).PageSize(1000, exrows => { }).ExecuteCommand();
Разделение сущности
[SplitTable(SplitType.Year)] //Таблица по годам (таблица поддерживает годы, кварталы, месяцы, недели и дни)
[SugarTable("SplitTestTable_{year}{month}{day}")]
public class SplitTestTable
{
[SugarColumn(IsPrimaryKey = true)]
public long Id { get; set; }
public string Name { get; set; }
} // При вставке подтаблицы, в соответствии с этим полем, в какую таблицу будет вставлена.
// При обновлении и удалении также удобно использовать это поле для определения связанной таблицы
[SplitField]
public DateTime CreateTime { get; set; }
}Split запрос
```cs
var list = db.Queryable<OrderSpliteTest>()
.SplitTable(DateTime.Now.Date.AddYears(-1), DateTime.Now)
.ToPageList(1, 2);
10.1 BulkCopy
db.Fastest<Order>().BulkCopy(lstData); //вставка
db.Fastest<Order>().PageSize(100000).BulkCopy(insertObjs);
db.Fastest<System.Data.DataTable>().AS("order").BulkCopy(dataTable);
10.2 BulkUpdate
db.Fastest<Order>().BulkUpdate(GetList()); //обновление
db.Fastest<Order>().PageSize(100000).BulkUpdate(GetList());
db.Fastest<Order>().BulkUpdate(GetList(), new string[] { "Id"}); //отсутствие первичного ключа
db.Fastest<Order>().BulkUpdate(GetList(), new string[] { "id"}, new string[] { "name", "time"}); //Установка обновляемых столбцов
//DataTable
db.Fastest<System.Data.DataTable>().AS("Order").BulkUpdate(dataTable, "Id"); //Id является первичным ключом
db.Fastest<System.Data.DataTable>().AS("Order").BulkUpdate(dataTable, "Id", Set the updated column);
10.3 BulkMerge (5.1.4.109)
db.Fastest<Order>().BulkMerge(List);
db.Fastest<Order>().PageSize(100000).BulkMerge(List);
10.4 BulkQuery
db.Queryable<Order>().ToList(); //Немного быстрее Dapper
//Подходит для экспорта больших данных
List<Order> order = new List<Order>();
db.Queryable<Order>().ForEach(it => { order.Add(it); }, 2000);
10.5 BulkDelete
db.Deleteable<Order>(list).PageSize(1000).ExecuteCommand();
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )