Mozi.DataAccess 是一个基于 .Net 开发的 SQL ORM 套件。框架的设计理念是:轻量,简洁,务实。
目的和愿景
开发这个项目就是为了最大限度的降低学习和使用成本,减少项目重构成本,提高开发效率。ORM这个圈子本身是有很多成熟的优秀的框架,今年流行这个明年流行那个,常常使我们疲于学习。 无论框架怎么变,一个ORM框架的核心无非是:1,持久化;2,对象映射;3,数据库访问。在以上三点的基础上需要同时保证:1,易用且实用;2,充分解耦合重构成本低;3,性能损耗低。
特点
-
轻量化
项目编译结果小,没有复杂的配置文件 -
可用性
框架经过了长周期的项目考验 -
低耦合
实现了业务逻辑和SQL的彻底分离,框架只专注于数据库的访问 -
可控性
框架的使用最大限度的保留了SQL的原貌
模块
-
数据库访问
-
对象映射
-
SQL执行队列
数据库适配
- SQLServer
- Sqlite
- MySql
SQL表达式定义
[{ "name": "mz.createtableuser", "command": "query", "parameter": [ ], "statement": " IF NOT EXISTS(SELECT 1 FROM sysobjects WHERE id=object_id(\'$schema$.tbUsers\') AND TYPE =\'U\')) CREATE TABLE tbUsers ( UserId varchar(10) default \'\' not null , NickName varchar(100) default \'\' not null, UserPwd varchar(32) default \'\' not null, RegDate date not null, Mobile varchar(20) default \'\' not null, IsForbidden int default 0 not null CONSTRAINT PK_TBUSERS PRIMARY KEY (UserId) ) ", "results": [ ], "comment": "创建用户信息表" },{ "name": "mz.getuserinfo", "command": "query", "parameter": [ "UserId" ], "statement": "select * from $schema$.tbUsers where UserId=#param.UserId# ", "results": [ "UserId", "Nickname" ], "comment": "获取用户信息" }]
模型类定义
using System; namespace Mozi.DataAccess.Test.Model { public class User { public string UserId { get; set; } public string NickName { get; set; } public string Password { get; set; } public string Mobile { get; set; } public DateTime RegDate { get; set; } public int IsForbidden { get; set; } } }
数据访问接口定义
public class DaUser { /// <summary> /// 数据库访问对象 /// </summary> SQLServer.Access _server = new SQLServer.Access(new ServerConfig() { Host="127.0.0.1", Instance="", User="sa", Password="123456", ConnectionName="测试库", Database="example" }); /// <summary> /// 查询指定的用户 /// </summary> /// <param name="userid"></param> /// <returns></returns> public User GetUsers(string userid) { SqlStatement sql = SqlMapContainer.Find("mz.getuserinfo"); return _server.ExecuteQueryForTop<User>(sql, new { UserId = userid }); } }
版权说明
本项目采用MIT开源协议,引用请注明出处。欢迎复制,引用和修改。复制请注明出处,引用请附带证书。意见建议疑问请联系软件作者,或提交ISSUE。
By Jason on Oct. 12,2017
评论