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

OSCHINA-MIRROR/code2roc-FastORM

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

В ветке normal проводится код-рефакторинг на основе ado.net, без зависимости от сторонних плагинов

Конфигурация некоторых параметров конфигурации:

<connectionStrings>
    <!--По умолчанию база данных соединения фреймворка-->
    <add name="Base_ConnectionString" connectionString="Database=test;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" />
    <!--Глобальная библиотека транзакций базы данных, использующая кросс-библиотечные транзакции, это соединение должно быть настроено-->
    <add name="GlobalTransition_ConnectionString" connectionString="Database=test;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" />
    <!--Другие библиотеки баз данных-->
    <add name="Test_ConnectionString" connectionString="Database=test2;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <appSettings>
    <!--Открывать ли глобальный SQL-трекинг, 1: открыть, 0: закрыть, использовать с таймаутом-->
    <add key="FastORM_TraceOvertTimeSQL" value="0"/>
    <!--Отслеживание SQL-запросов, превышающих установленный лимит времени (в миллисекундах)-->
    <add key="FastORM_TraceOverTimeLimit" value="2000"/>

Создание сущности:

public class User:BaseEntity
    {
        [Key]
        public string UserGuid { set; get; }
        public string Name { set; get; }
        public int Age { set; get; }
        public string LoginName { set; get; }
        public string PassWord { set; get; }
        public DateTime AddDate { set; get; }
    }

Примечание: все сущности должны наследоваться от BaseEntity и иметь аннотацию [key] для поля первичного ключа.

Описание метода:

При запуске программы выполните DBUtil.Init(), который сканирует все сущности, наследуемые от BaseEntity, анализирует свойства объектов и данные, использует динамические методы Emit для кэширования, а также поддерживает отслеживание SQL-операторов через TraceSQL атрибут переменных в классах DBUtil и DBRow. После настройки параметров FastORM_TraceOvertTimeSQL и FastORM_TraceOverTimeLimit можно полностью отслеживать операции с базой данных с истекшим временем ожидания.

Вставка:

dbutil.Insert(user); Удаление:

dbutil.Remove(user); Обновление:

dbutil.Save(user); Поиск:

User user = dbutil.FindOne<User>("yanpeng19940119"); Примечание:

  1. Поиск по умолчанию осуществляется по первичному ключу.
  2. При поиске обновлённых объектов из базы данных изменения полей будут записаны, но полное обновление полей не произойдёт.
  3. Для новых объектов (полученных из JSON-данных, отправленных с переднего плана), предоставляется метод Save(T Entity, string[] SaveColumn) для обновления определённых полей.

Поддержка некоторых сложных методов:

Подсчёт количества таблиц (для разбиения на страницы):

Count<T>() Пакетная вставка:

InsertBatch<T>(List<T> EntityList, int BatchSize = 500) Поиск списка данных:

List<T> FindList<T>(string SQL) Разбиение на страницы:

List<T> FindListPage<T>(string SQL, int PageSize, int PageNum, string OrderBy) Объединение запросов:

DataTable FindView(string SQL) Выполнение SQL-команды:

ExecuteSQL(string SQL) Запрос одного объекта:

Object ExecuteScar(string SQL) Примечание: Все методы предоставляют перегрузку для переключения источников данных.

Транзакции:

Внутрибиблиотечная транзакция:

            string exceptionstr = string.Empty;
            bool issuccess = dbutil.ExecuteTransition_SDB(delegate()
            {
                User user = new User();
                user.UserGuid = "ceshi00992";
                user.Name = "yanpeng";
                user.LoginName = "15195007397";
                user.PassWord = "123456";
                user.Age = 26;
                user.AddDate = DateTime.Now;
                dbutil.Insert(user);
                dbutil.ExecuteSQL("update User set Age=27");


            }, out exceptionstr);
            Console.WriteLine(issuccess);

Распределённая транзакция (ручной откат):

 string exceptionstr = string.Empty;
            User user = new User();
            user.UserGuid = "ceshi00992";
            user.Name = "yanpeng";
            user.LoginName = "15195007397";
            user.PassWord = "123456";
            user.Age = 26;
            user.AddDate = DateTime.Now;

            User user1 = dbutil.FindOne<User>("yanpeng19940119");
            var orginalage = user1.Age;
            bool issuccess = dbutil.ExecuteTransition_DDB_HandleRollBack(delegate()
            {

                dbutil.Insert(user, "Test_ConnectionString");
                user1.Age = 44;
                dbutil.Save(user);
                throw new Exception("111111");

            }, delegate()
            {
                dbutil.Remove(user, "Test_ConnectionString");
                user1.Age = orginalage;
                dutil.Save(user);
            }, out exceptionstr);
            Console.WriteLine(issuccess);

Распределённая транзакция (автоматический откат, только поддержка простых insert, update, delete):

 string exceptionstr = string.Empty;
            User user =

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

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

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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