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

OSCHINA-MIRROR/wangwei123-Mast

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

Маст (Mast) — это облегчённый ORM-фреймворк, который позволяет быстро начать работу за несколько минут и поддерживает базы данных MySQL, MSSQL, Oracle и Access.

В настоящее время Маст поддерживает следующие функции:

  1. Добавление, изменение, удаление и запрос.
  2. Автоматическая разбивка на страницы.
  3. Пакетное добавление, пакетное изменение и пакетное удаление.
  4. Поддержка транзакций.
  5. Разбиение на страницы запроса.

Пример кода:

int pageIndex = 1;
int pageSize = 3;
string strSql = "SELECT e.*, c.company_name FROM employee e INNER JOIN company c ON e.company_id = c.id WHERE e.name = @name";

ParamMap param = ParamMap.newMap();
param.setPageParamters(page, limit);
//Разбиение на страницы требует использования поля сортировки при запросе, обязательно укажите псевдоним таблицы SQL, например, для сотрудника: e
param.setOrderFields("e.id", true);
param.setParameter("name", "LiYang");

Session session = SessionFactory.GetSession();
List<Employee> emList = session.Find<Employee>(strSql, param);

Разбиение на страницы:

  • Используются именованные параметры, способ передачи параметров через ParamMap.
  • Возвращает общее количество записей и объект PageResult, содержащий данные.

Пример кода:

public PageResult<Store> findByPage(int page, int limit)
{
    Session session = SessionFactory.GetSession();
    String sql = "select * from store";

    ParamMap param = ParamMap.newMap();
    param.setPageParamters(page, limit);
    param.setOrderFields("id", true);

    PageResult<Store> pageResult = session.FindPage<Store>(sql, param);

    return pageResult;
}


public class PageResult<T>
{
    /// <summary>
    /// Общее количество записей в разбиении на страницы
    /// </summary>
    public int Total {get; set;}

    /// <summary>
    /// Коллекция результатов разбиения на страницы
    /// </summary>
    public List<T> DataList {get; set;}
}

Запрос одной записи:

Пример кода:

string strSql = "SELECT e.*, c.company_name FROM employee e INNER JOIN company c ON e.company_id = c.id WHERE e.name = @name";
ParamMap param = ParamMap.newMap();
param.setParameter("name", "LiYang");

Employee em = session.FindOne<Employee>(strSql, param);

Обычный запрос:

Пример кода:

string strSql = "SELECT e.*, c.company_name FROM employee e INNER JOIN company c ON e.company_id = c.id";

List<Employee> emList = session.Find<Employee>(strSql);

Добавление:

  • После добавления возвращается значение первичного ключа добавленной записи.
  • Значение первичного ключа автоматически заполняется в добавленную запись сущности.

Пример кода:

//Создание компании
Company company = new Company();
company.CompanyName = txtName.Text.Trim();
company.Industry = txtIndustry.Text.Trim();
company.Address = txtAddress.Text.Trim();

session.Insert<Company>(company);

if (company.Id > 0) {
    MessageBox.Show("Создание компании успешно!");
}


//Добавление сотрудника
Company company = m_CompanyList[cbCompany.SelectedIndex]; 
Employee employee = new Employee();
employee.Name = txtName.Text.Trim();
mployee.Age = Convert.ToInt32(txtAge.Text.Trim());
employee.Address = txtAddress.Text.Trim();
employee.Created = DateTime.Now;
employee.CompanyId = company.Id;

session.Insert<Employee>(employee);
if (employee.Id > 0)
{
    MessageBox.Show("Добавление сотрудника успешно!");
}

Пакетное добавление:

  • Значение первичного ключа автоматически заполняется в добавленные записи сущности.
  • Метод пакетного добавления более эффективен по сравнению с ручным циклом нескольких объектов и последующим вызовом добавления.

Пример кода:

Session session = SessionFactory.GetSession();
session.BeginTransaction();

List<Company> compList = new List<Company>();

int count = 2000;
for(int i = 0; i < count; i++)
{ 
    Company company = new Company();
    company.CompanyName = "Name-" + i;
    company.Industry = "Test-" + i;
    company.Address = "Address-" + i;
    company.Desc = "Description-" + i;
    company.Order = "Order-" + i;
    company.Created = DateTime.Now;
    compList.Add(company);
}

session.Insert<Company>(compList);
session.Commit();

MessageBox.Show("Пакетное добавление успешно!");

Изменение:

Пример кода:

Company entity = new Company();
entity.Id = 1;
entity.Name = "Baidu";
session.Update(entity);

Пакетное изменение:

  • Более эффективно по сравнению с ручным циклом нескольких объектов и последующим вызовом изменения.

Пример кода:

List<Company> companyList = ...;
session.Update(companyList);

Удаление:

  • Удаление данных по объекту.
  • Удаление данных по первичному ключу.

Пример кода:

Company company = m_companyList[i];
//удалить объект
session.Delete(company);

//удалить по id
session.Delete(company.Id);

Пакетное удаление:

  • По объекту.
  • По первичному ключу.
  • Пакетное удаление более эффективно по сравнению с ручным вызовом удаления.

Пример кода:


//удаление по объекту
List<Company> companyList = ...;
session.Delete(companyList);

//удаление по id
object[] ids = new object[]{1,2,3,4,5};
session.Delete(ids);

Отображение отношений между базой данных и объектами C#:

Пример кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;  
 
namespace Mast.Entity  
{  
     [Table(Name = "company")] 
     public class Company
     { 
        [Id(Name = "id", Strategy =

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

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

Введение

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

Обновления

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

Участники

все

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

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