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的更多相关文章

  1. 【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库

    Retrofit官网:http://square.github.io/retrofit/ Retrofit 和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit ...

  2. [ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装

    关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现tab2[医疗]模块,[医疗]模块跟tab1[健康]模块类似. [ionic开源项目教程] - 第12讲 医疗 ...

  3. 使用Spring框架的12个开源项目

    使用Spring框架的12个开源项目 http://www.csdn.net/article/2013-10-14/2817176-open-source-projects-that-use-spri ...

  4. 2018年12月份GitHub上最热门的Java开源项目

    来自:开源最前线(ID:OpenSourceTop) 链接:https://www.itcodemonkey.com/article/12747.html 又到了公布 GitHub 上热门项目的时候啦 ...

  5. .NET平台开源项目速览(12)哈希算法集合类库HashLib

    .NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能.实际上,大部分情况下已经满足了需求,而且.NET实现的都是目前国际上 ...

  6. .NET Core/.NET5/.NET6 开源项目汇总12:WPF组件库2

    系列目录     [已更新最新开发文章,点击查看详细] WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Frame ...

  7. .Net 开源项目资源大全

    伯乐在线已在 GitHub 上发起「DotNet 资源大全中文版」的整理.欢迎扩散.欢迎加入. https://github.com/jobbole/awesome-dotnet-cn (注:下面用 ...

  8. 直接拿来用,最火的.NET开源项目

    综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管理( ...

  9. .NET开源项目

      综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管 ...

随机推荐

  1. yum命令安装jdk

    1.查看是否已安装JDK,卸载 yum list installed |grep java java--openjdk.x86_64 :.b13.el7_5 @updates java--openjd ...

  2. Java中守护线程的总结

    在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例中尚存 ...

  3. 对于解决VS2015启动界面卡在白屏的处理方法

    有时候会遇到这种情况,仅供参考 找到devenv.exe所在文件夹,按住Shift,在空白地方右键,选择“在此处打开命令窗口”,在打开的窗口中输入devenv /ResetSettings 重新设置V ...

  4. Python进阶(六)----装饰器

    Python进阶(六)----装饰器 一丶开放封闭原则 开放原则: ​ 增加一些额外的新功能 封闭原则: ​ 不改变源码.以及调用方式 二丶初识装饰器 装饰器: ​ 也可称装饰器函数,诠释开放封闭原则 ...

  5. 【开发工具】- Idea.2018.02注册码激活

    1.从下面地址下载一个jar包,名称是  JetbrainsCrack-3.1-release-enc.jar 下载地址: 链接: https://pan.baidu.com/s/1VZjklI3qh ...

  6. Jmeter学习笔记(二十三)——生成HTML性能报告

    有时候我们写性能报告的时候需要一些性能分布图,JMeter是可以生成HTML性能报告的.这篇博客,简单介绍下在利用jmeter进行性能测试时,是如何生成HTML的可视化测试报告的 一.准备工作 1:j ...

  7. 三星手机使用应用沙盒一键修改路由mac数据

    之前文章介绍了怎么在安卓手机上安装激活xposed框架,xposed框架的极强的功能大家都知道,能够不修改apk的前提下,修改系统底层的参数,打比方在某些应用情景,大家需要修改手机的某个系统参数,这情 ...

  8. 基于 Express + MySQL + Redis 搭建多用户博客系统

    1. 项目地址 https://github.com/caochangkui/node-express-koa2-project/tree/master/blog-express 2. 项目实现 Ex ...

  9. Oracle恢复流程图

    本图来自于网络,想当初小麦苗刚开始接触备份恢复的时候,就是靠着这张图来学习的,今天把这张图分享给大家,共勉. ............................................. ...

  10. Spring Boot 配置多源的 RabbitMQ

    简介 MQ 是开发中很平常的中间件,本文讲述的是怎么在一个Spring Boot项目中配置多源的RabbitMQ,这里不过多的讲解RabbitMQ的相关知识点.如果你也有遇到需要往多个RabbitMQ ...