1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zqlovejyc-SQLBuilder

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme.md

Перевод текста на русский язык:

SQLBuilder.Core

Изображение:

<p></p>

<p align="center">
<img src="https://gitee.com/zqlovejyc/SQLBuilder.Core/raw/master/SQLBuilder.Core/Icon/sql.png" height="80"/>
</p>

Центрированные элементы:

<div align="center">

[![star](https://gitee.com/zqlovejyc/SQLBuilder/badge/star.svg)](https://gitee.com/zqlovejyc/SQLBuilder/stargazers) [![fork](https://gitee.com/zqlovejyc/SQLBuilder/badge/fork.svg)](https://gitee.com/zqlovejyc/SQLBuilder/members) [![GitHub stars](https://img.shields.io/github/stars/zqlovejyc/SQLBuilder?logo=github)](https://github.com/zqlovejyc/SQLBuilder/stargazers) [![GitHub forks](https://img.shields.io/github/forks/zqlovejyc/SQLBuilder?logo=github)](https://github.com/zqlovejyc/SQLBuilder/network) [![GitHub license](https://img.shields.io/badge/license-Apache2-yellow)](https://github.com/zqlovejyc/SQLBuilder/blob/master/LICENSE) [![nuget](https://img.shields.io/nuget/v/Zq.SQLBuilder.svg?cacheSeconds=10800)](https://www.nuget.org/packages//Zq.SQLBuilder)

</div>

Слева:

.NET Framework 4.5 версии Expression выражения преобразуются в SQL-запросы, поддерживаются SqlServer, MySql, Oracle, Sqlite, PostgreSql; на основе Dapper реализованы соответствующие репозитории для данных в базах данных;

🌭 Открытые адреса

🥥 Пакеты расширения фреймворка

Пакет Имя Версия Описание
nuget Zq.SQLBuilder nuget Основной пакет SQLBuilder
nuget Zq.SQLBuilder.Diagnostics nuget Пакет расширения диагностики SQLBuilder

🚀 Быстрый старт

  • ➕ Добавление
//Добавление
await _repository.InsertAsync(entity);

//Пакетное добавление
await _repository.InsertAsync(entities);

//Добавление с использованием SQLBuilder
await SqlBuilder
        .Insert<MsdBoxEntity>(() =>
            entity)
        .ExecuteAsync(
            _repository);

//Пакетное добавление с использованием SQLBuilder
await SqlBuilder
        .Insert<MsdBoxEntity>(() =>
            new[]
            {
                new UserInfo { Name = "张三", Sex = 2 },
                new UserInfo { Name = "张三", Sex = 2 }
            })
        .ExecuteAsync(
            _repository);
  • 🗑 Удаление
//Удаление
await _repository.DeleteAsync(entity);

//Пакетное удаление
await _repository.DeleteAsync(entitties);

//Условное удаление
await _repository.DeleteAsync<MsdBoxEntity>(x => x.Id == "1");

//Удаление с использованием SQLBuilder
await SqlBuilder
        .Delete<MsdBoxEntity>()
        .Where(x =>
            x.Id == "1")
        .ExecuteAsync(
            _repository);

//Первичный ключ удаления
await SqlBuilder
        .Delete<MsdBoxEntity>()
        .WithKey("1")
        .ExecuteAsync(
            _repository);
  • ✏ Обновление
//Обновление
await _repository.UpdateAsync(entity);

//Пакетное обновление
await _repository.UpdateAsync(entities);

//Условное обновление
await _repository.UpdateAsync<MsdBoxEntity>(x => x.Id == "1", () => entity);

//Обновление с использованием SQLBuilder
await SqlBuilder
        .Update<MsdBoxEntity>(() =>
            entity,
            DatabaseType.MySql,
            isEnableFormat:true)
        .Where(x =>
            x.Id == "1")
        .ExecuteAsync(
            _repository);
  • 🔍 Запрос
//Простой запрос
await _repository.FindListAsync<MsdBoxEntity>(x => x.Id == "1");

//Соединённый запрос
await SqlBuilder
        .Select<UserInfo, UserInfo, Account, Student, Class, City, Country>((u, t, a, s, d, e, f) =>
            new { u.Id, UId = t.Id, a.Name, StudentName = s.Name, ClassName = d.Name, e.CityName, CountryName = f.Name })
``` **Текст запроса представляет собой фрагмент кода на языке C#.**

В запросе содержатся фрагменты кода, которые представляют собой запросы к базе данных с использованием LINQ и различных методов работы с данными. Также в запросе есть код, который демонстрирует использование IOC-контейнера для внедрения зависимостей.

**Точный перевод текста невозможен, так как он содержит множество технических терминов и конструкций, специфичных для разработки программного обеспечения.** Однако можно сделать общий перевод, который будет понятен специалистам в данной области:

Запрос представляет собой набор инструкций по работе с базой данных, включая запросы с использованием LINQ, а также примеры использования IOC-контейнеров для внедрения зависимостей между компонентами системы. **executeError: msg => Console.WriteLine(msg.Exception?.Message),
    executeDispose: msg => Console.WriteLine(msg.MasterConnection.State),
    disposeError: msg => Console.WriteLine(msg.Exception?.Message));**

var container = builder.Build();

var repo = container.Resolve<Func<string, IRepository>>()(null);

var res = repo.Any<Log>(x => x.Id == 2633);
###  Конфигурация базы данных
```csharp
//appSettings
<add key="ConnectionStrings" value="{'Base':['SqlServer','Server=.;Database=TestDb;Uid=test;Pwd=123;'],'OracleDb':['Oracle','строка подключения к базе данных'],'MySqlDb':['MySql','строка подключения к базе данных'],'SqliteDb':['Sqlite','строка подключения к базе данных'],'PgsqlDb':['PostgreSql','строка подключения к базе данных']}" />

//connectionStrings
<add name="ConnectionStrings" connectionString="{'Base':['SqlServer','Server=.;Database=TestDb;Uid=test;Pwd=123;'],'OracleDb':['Oracle','строка подключения к базе данных'],'MySqlDb':['MySql','строка подключения к базе данных'],'SqliteDb':['Sqlite','строка подключения к базе данных'],'PgsqlDb':['PostgreSql','строка подключения к базе данных']}"/>

📰 Транзакции

//Способ один
IRepository trans = null;
try
{
    //Начать транзакцию
    trans = _repository.BeginTransaction();

    //Операция записи в базу данных
    await trans.InsertAsync(entity);

    //Зафиксировать транзакцию
    trans.Commit();
}
catch (Exception)
{
    //Откатить транзакцию
    trans?.Rollback();
    throw;
}

//Способ два
var res = await _repository.ExecuteTransactionAsync(async trans =>
{
    var retval = (await trans.InsertAsync(entity)) > 0;

    if (input.Action.EqualIgnoreCase(UnitAction.InDryBox))
        code = await _unitInfoService.InDryBoxAsync(dryBoxInput);
    else
        code = await _unitInfoService.OutDryBoxAsync(dryBoxInput);

    return code == ErrorCode.Successful && retval;
});
### 📯 Хранилище + переключение между базами данных
```csharp
private readonly Func<string, IRepository> _handler;
private readonly IRepository _repository;

public MyService(Func<string, IRepository> hander)
{
    _handler = hander;

    //По умолчанию базовое хранилище данных
    _repository = hander(null);
}

//Базовое хранилище
var baseRepository = _handler("Base");

//Cap хранилище
var capRepository = _handler("Cap");

🎣 Разделение чтения и записи

//Способ один
_repository.Master = false;

//Способ два
_repository.UseMasterOrSlave(master)

🧪 Тестирование документации

🍻 Вклад кода

SQLBuilder следует лицензии с открытым исходным кодом Apache-2.0, приглашаем всех внести свой вклад через PR или Issue.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

.NET Framework 4.5 версия. Преобразование выражений в SQL-операторы. Поддерживаются SqlServer, MySql, Oracle, Sqlite, PostgreSql. На основе Dapper реализованы репозитории для хранилищ данных, соответствующие различным базам данных. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zqlovejyc-SQLBuilder.git
git@api.gitlife.ru:oschina-mirror/zqlovejyc-SQLBuilder.git
oschina-mirror
zqlovejyc-SQLBuilder
zqlovejyc-SQLBuilder
master