В ветке 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");
Примечание:
Поддержка некоторых сложных методов:
Подсчёт количества таблиц (для разбиения на страницы):
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 )