开源项目 12 ServiceStack.OrmLite
using ServiceStack;
using ServiceStack.DataAnnotations;
using ServiceStack.OrmLite;
using ServiceStack.Text;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApp2.test1
{
public class Class12
{
//ServiceStack.OrmLite
//原文:https://www.cnblogs.com/xxfcz/p/7045808.html
//原文:https://www.cnblogs.com/wang2650/category/780821.html public void test1()
{
//查询数据
string connString = "data source=.\\sqlexpress;initial catalog=MyDbContext;user id=sa;password=sa;";
var dbFactory = new OrmLiteConnectionFactory(connString, SqlServerDialect.Provider);
using (var db = dbFactory.Open())
{
var roles = db.Select<Book>();
"Roles: {0}".Print(roles.Dump());//输出到控制台
}
} public void test2()
{
//创建表,如果表已存在,那么删除后再创建
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
string connString = "data source=.\\sqlexpress;initial catalog=MyDbContext;user id=sa;password=sa;";
using (var db = connString.OpenDbConnection())
{
db.DropAndCreateTable<Book2>();
}
} public void test3()
{
//创建表,并插入一条数据。表如果已存在,则不插入数据
string connectionString = "data source=.\\sqlexpress;initial catalog=MyDbContext;user id=sa;password=sa;";
var dbFactory = new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider);
using (var db = dbFactory.Open())
{
if (db.CreateTableIfNotExists<Book2>())
{
db.Insert(new Book2 { Id = , Name = "Seed Data" });
}
}
} public void test4()
{
//插入
string connectionString = "data source=.\\sqlexpress;initial catalog=MyDbContext;user id=sa;password=sa;";
var dbFactory = new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider);
using (var db = dbFactory.Open())
{
//db.CreateTableIfNotExists<Book2>();
//db.Insert(new Book2 { Id = 1, Name = "Seed Data1" });
//db.Insert(new Book2 { Id = 2, Name = "Seed Data2" });
//db.Insert(new Book2 { Id = 3, Name = "Seed Data3" });
//db.Insert(new Book2 { Id = 4, Name = "Seed Data4" });
//db.Insert(new Book2 { Id = 5, Name = "Seed Data5" }); ////异步 新增
//Task<long> task = db.InsertAsync(new Book2 { Id = 6, Name = "Seed Data6" });
//Console.WriteLine("The Sum is:" + task.Result); ////只新增 指定字段
//db.InsertOnly<Book2>(new Book2 { Id = 6, Name = "Seed Data6" }, c => c.Id); ////新增数据 返回自增长ID。 这里需要修改一下环境,数据库表设置主键、设置自增长,Model的Id增加特性AutoIncrement、PrimaryKey
//long id = db.Insert(new Book2 { Name = "Seed Data5" }, selectIdentity: true);
//Console.WriteLine(id); ////插入数据的时候,自动插入创建时间等 通用字段
////全局的 插入时 过滤
//OrmLiteConfig.InsertFilter = (dbCmd, row) => {
// var auditRow = row as BaseEntity;
// if (auditRow != null)
// auditRow.CreatedDate = auditRow.ModifiedDate = DateTime.UtcNow;
//};
////db.CreateTableIfNotExists<Book3>();
//db.Insert(new Book3 { Id = 3, Name = "Seed Data3" });
//db.Insert(new Book3 { Id = 4, Name = "Seed Data4" });
//db.Insert(new Book3 { Id = 5, Name = "Seed Data5" }); ////直接执行sql语句
//db.ExecuteSql("INSERT INTO Book2 (Id, Name) VALUES (@Id, @Name)", new Book2 { Id = 5, Name = "Seed Data5" }); //批量添加
int i = ;
var rows = "A,B,B,C,C,C,D,D,E".Split(',').Map(x => new Book2 { Name = x, Id = (i++) });
db.InsertAll(rows);
}
} public void test5()
{
//删除
string connectionString = "data source=.\\sqlexpress;initial catalog=MyDbContext;user id=sa;password=sa;";
var dbFactory = new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider);
using (var db = dbFactory.Open())
{
//db.DeleteById<Book2>(0);
//db.Delete<Book2>(new Book2 { Id = 1, Name = "B" });
//db.Delete<Book2>(p => p.Name == "D"); ////这里没有测试成功,原因未知
//var updatedRow = db.SingleById<Book4>(1); // fresh version
//db.DeleteById<Book4>(id: updatedRow.Id, rowVersion: updatedRow.RowVersion);
}
} public void test6()
{
string connectionString = "data source=.\\sqlexpress;initial catalog=MyDbContext;user id=sa;password=sa;";
var dbFactory = new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider);
using (var db = dbFactory.Open())
{
//db.Update(new Book2 { Id = 2, Name="BB" });
// sql:UPDATE "Person" SET "FirstName" = 'Jimi',"LastName" = 'Hendrix',"Age" = 27 WHERE "Id" = 1 //db.Update(new Book2 { Id=1, Name = "CCCC" }, p => p.Name == "BBCCB");
//Console.WriteLine(db.GetLastSql()); ////部分更新
//db.UpdateNonDefaults(new Book2 { Name = "CC" }, p => p.Name == "CCCC"); ////部分更新
//db.UpdateOnly(new Book2 { Name = "DD" },
//onlyFields: p => new { p.Name },
//where: p => p.Id == 1); //先获取 再更新
var updatedRow = db.SingleById<Book2>();
updatedRow.Name = "AA";
db.Update(updatedRow); //打印SQL语句
Console.WriteLine(db.GetLastSql());
}
} public void test7()
{ } public class Book4
{
public int Id { get; set; }
public string Name { get; set; }
public ulong RowVersion { get; set; }
} public class BaseEntity
{
public int Id { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
public string ModifiedBy { get; set; }
} public class Book3 : BaseEntity
{
public string Name { get; set; }
} [Serializable]
[Alias("Book2")]
public class Book2
{
//[AutoIncrement]
//[PrimaryKey]
public int Id { get; set; }
public string Name { get; set; }
} [Serializable]
[Alias("Book")]
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
} } }
开源项目 12 ServiceStack.OrmLite的更多相关文章
- 【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库
Retrofit官网:http://square.github.io/retrofit/ Retrofit 和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit ...
- [ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装
关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现tab2[医疗]模块,[医疗]模块跟tab1[健康]模块类似. [ionic开源项目教程] - 第12讲 医疗 ...
- 使用Spring框架的12个开源项目
使用Spring框架的12个开源项目 http://www.csdn.net/article/2013-10-14/2817176-open-source-projects-that-use-spri ...
- 2018年12月份GitHub上最热门的Java开源项目
来自:开源最前线(ID:OpenSourceTop) 链接:https://www.itcodemonkey.com/article/12747.html 又到了公布 GitHub 上热门项目的时候啦 ...
- .NET平台开源项目速览(12)哈希算法集合类库HashLib
.NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能.实际上,大部分情况下已经满足了需求,而且.NET实现的都是目前国际上 ...
- .NET Core/.NET5/.NET6 开源项目汇总12:WPF组件库2
系列目录 [已更新最新开发文章,点击查看详细] WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Frame ...
- .Net 开源项目资源大全
伯乐在线已在 GitHub 上发起「DotNet 资源大全中文版」的整理.欢迎扩散.欢迎加入. https://github.com/jobbole/awesome-dotnet-cn (注:下面用 ...
- 直接拿来用,最火的.NET开源项目
综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管理( ...
- .NET开源项目
综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管 ...
随机推荐
- 笔记本用hdmi连接显示器后无法播放声音问题
打开控制面板的声音选项,把默认播放音频的设备设置成笔记本扬声器.这种方法直接利用笔记本扬声器
- 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?
[i.MX6UL/i.MX6ULL开发常见问题]2.3单独编译内核,uboot生成很多文件,具体用哪一个? 答:内核编译出来的文件是~/MYiR-imx-Linux/arch/arm/boot/目录下 ...
- Nginx配置Yii:backend&frontend
#My vlson.top project #frontend server { listen 80; server_name www.vlson.com; #charset koi8-r; set ...
- 升级tinyhttpd-0.1.0,让其支持网页显示图像
tinyhttpd是学习http协议非常好的工具,但是由于其过于简单,不支持在网页上显示图片,所以我改了一些代码,让tinyhttpd可以现实图像,供新手一起学习和熟悉http协议,ubuntu14. ...
- 安装nginx + nginx-gridfs + mongodb
1.安装依赖包 yum -y install pcre-devel openssl-devel zlib-devel git gcc gcc-c++ git clone https://github. ...
- vip视频播放
插件 Tampermonkey https://greasyfork.org/zh-CN
- 大数据之kafka-05.讲聊聊Kafka的版本号
今天聊聊kafka版本号的问题,这个问题实在是太重要了,我觉得甚至是日后能否用好kafka的关键.上一节我们介绍了kafka的几种发行版,其实不论是哪种kafka,本质上都内嵌了最核心的Apache ...
- 编译安装 keepalived-2.0.16.tar.gz
一.下载安装包 wget https://www.keepalived.org/software/keepalived-2.0.16.tar.gz 安装相关依赖 把所有的rpm包放在一个目录下. rp ...
- vs调试的时候无法命中断点
visual studio 调试的时候如果没有命中断点,可能是启动的时候就出错了. 在文件Global.asax中, protected void Application_Error(object s ...
- Alpha2的项目互评互测
目录 @(Alpha2项目测试) 这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业要求的链接 团队名称 你的代码我的发 这个作业的目标 其他参考文献 软件测试用例 姓名 学号 团队名称 李涵 ...