在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:Dubonnet开源软件地址:https://gitee.com/azhai/Dubonnet开源软件介绍:DubonnetA .NET Core v2.x ORM that runs on Dapper. 下载 NuGet: Thanks to
Example
dotnet new webapi -n MyDubon -lang C#cd MyDubon#dotnet run #访问 https://localhost:5001/api/values/ 查看效果 并安装相关的依赖库 dotnet add package MySqlConnector --version 0.56.0dotnet add package MySqlConnector.Logging.Serilog --version 0.38.0dotnet add package Dapper --version 1.60.6dotnet add package Dubonnet --version 2.2.0
{ "Logging": { "LogLevel": { "Default": "Warning" } }, "ConnectionStrings": { "DefaultConnection": "server=127.0.0.1;user id=dba;password=pass;port=3306;database=db_mobile;SslMode=none" }, "AllowedHosts": "*"}
#复制 Dubonnet/src/Example/Models/ 下的这两个文件复制过来,#并将 namespace 从 Dubonnet.Example 改为 MyDubon#在 AppDbContext.cs 中 namespace 上面增加代码 using Dubonnet; 修改 Startup.cs 中 ConfigureServices() 增加依赖注入 using MyDubon.Models; // 其他代码 ... public class Startup { // 其他代码 ... public void ConfigureServices(IServiceCollection services) { var dsnMySql = Configuration.GetConnectionString("DefaultConnection"); services.AddSingleton(new AppDbContext(dsnMySql)); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); } // 其他代码 ... } (可选)对 Program.cs 作如下修改,自定义网址 // 其他代码 ... public class Program { // 其他代码 ... public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseUrls("http://127.0.0.1:5001") .UseStartup<Startup>();
using MyDubon.Models; // 其他代码 ... [Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { private readonly AppDbContext db; public ValuesController(AppDbContext db) { this.db = db; } // GET api/values [HttpGet] public ActionResult<IEnumerable<string>> Get() { var area = db.Areas.Where("areacode", "0755").Get(); return new string[] { area.province, area.city }; //return new string[] { "value1", "value2" }; } // 其他代码 ... } Base APIRetrieving entities by idvar product = db.Products.Get(1); Retrieving all entities in a tablevar products = db.Products.All().ToList(); Selecting some entitiesvar products = db.Products.WhereIn("id", new int[]{3,4,5}).All();// 和下面的查询等价:var same_products = db.Products.WhereRaw("id IN (?,?,?)",3,4,5).All(); Inserting entitiesvar product = new Product { Name = "Awesome bike", InStock = 4 };int id = db.Products.Insert(product); var products = new List<Product>{ new Product { Name = "Awesome bike", InStock = 4 }, new Product { Name = "Awesome bike 2", InStock = 5 }};int count = db.Products.Insert(products); Updating entitiesvar product = db.Products.Get(1);product.LastUpdate = DateTime.Now;db.Products.Update(product); var products = db.Products.WhereIn("id", new int[]{1,2}).All().ToList();products[0].LastUpdate = DateTime.Now;products[1].LastUpdate = DateTime.Now;db.Products.Update(products); Removing entitiesvar product = db.Products.Get(1);db.Products.Delete(product); var products = db.Products.WhereIn("id", new int[]{1,2}).All();db.Products.Delete(products); Shardingusing System;// 分库分表,假设产品按年分库,按月分表// 当前2019年6月表名为`db_product_y2019`.`t_product_m201906`int pageNo = 1, pageSize = 10;DateTime someDay = DateTime.Now.AddMonths(-3);var referName = products.CurrentName + someDay.ToString("yyyyMM");var products = db.Products.Where("created_at", ">=", someDay.ToString("yyyy-MM-dd"));// 找出类似db_product_y2019等数据库,并倒序排列数据库和表名products.DbNameMatch = "db_product_y%";products.IsTableNameDesc = true;// 数据表名称限制为 t_products_m201906products.tableFilter = (table, db) => table.CompareTo(referName) >= 0;var count = unchecked((int)products.CountSharding());// Console.WriteLine("Count={0} PageNo={1}", count, pageNo);var rows = products.PaginateSharding(pageNo, pageSize); Extensibility
|
请发表评论