微型 ORM-FluentData
🏷️ FluentData
简介
与其他微型 ORM(如 Dapper 和 Massive)类似,FluentData 关注性能和易用性。它允许开发人员拥有对 SQL 较多的控制,而不是依赖 ORM 进行自动生成。它不仅可以使用 SQL 来执行查询、增添和更新操作,还可以支持使用存储过程和事务。 根据文档描述,FluentData 可以在不改动已有结构的情况下,与任何业务对象一同工作。
以下是 FluentData 的一些其他特性:
多结果集(Multiple Result Set):在一次数据库操作下返回多个数据集;
开发人员可使用强类型对象或动态对象;
可为创建时需要特殊处理的复杂对象自定义实体工厂(Custom Entity Factory);
具有添加其他数据库支持的能力。
FluentData 需要 .NET 4.0,并支持 SQL Server、SQL Azure、SQL Server Compact 以及使用 .NET 驱动的 Oracle 和 MySQL。
相关文章
项目地址
Dll 下载地址
教程
测试代码
点击查看代码
cs
using FluentData;
using FluentSample.Models;
using System.Collections.Generic;
using System.Web.Mvc;
namespace FluentSample.Controllers
{
public class TestController : Controller
{
private IDbContext DbContext = new DbContext().ConnectionStringName("DefaultConnection", new SqlServerProvider());
// GET: /Test/
public ActionResult Index()
{
List<Test> models = DbContext.Sql("select * from test").QueryMany<Test>();
return View(models);
}
// GET: /Test/Details/5
public ActionResult Details(int id)
{
Test test = DbContext.Sql("select * from Test where Id = @Id")
.Parameter("Id", id)
.QuerySingle<Test>();
return View(test);
}
// GET: /Test/Create
public ActionResult Create()
{
return View();
}
// POST: /Test/Create
[HttpPost]
public ActionResult Create(Test test)
{
try
{
// TODO: Add insert logic here
int rtnVal = DbContext.Insert("Test")
.Column("Id", test.Id)
.Column("Name", test.Name)
.Execute();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
// GET: /Test/Edit/5
[HttpGet]
public ActionResult Edit(int id)
{
Test test = DbContext.Sql("select * from Test where Id = @Id")
.Parameter("Id", id)
.QuerySingle<Test>();
return View(test);
}
// POST: /Test/Edit/5
[HttpPost]
public ActionResult Edit(Test test)
{
try
{
// TODO: Add update logic here
DbContext.Update("Test")
.Column("Name", test.Name)
.Where("Id", test.Id)
.Execute();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
// GET: /Test/Delete/5
[HttpGet]
public ActionResult Delete(int id)
{
Test test = DbContext.Sql("select * from Test where Id = @Id")
.Parameter("Id", id)
.QuerySingle<Test>();
return View(test);
}
// POST: /Test/Delete/5
[HttpPost]
public ActionResult Delete(Test test)
{
try
{
// TODO: Add delete logic here
DbContext.Delete("Test")
.Where("Id", test.Id)
.Execute();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
}
}