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. EgretWing链接微信开发工具调试问题

    EgretWing链接微信开发工具调试问题 EgretWing 编译器支持持三种调试模式,Node.js .Chrome .EgretWing 扩展开发. 开发过程中会遇到工具配置错误. 这就需要在E ...

  2. flickity:支持触摸滑动,响应迅速的幻灯片轮播插件

    简介:flickity 是一个支持触摸,响应迅速的幻灯片轮播插件.支持环绕滑动.自由滑动.组滑动.自动播放.延迟加载.视差滑动.图片滑动.兼容IE10+, Android 4+, Safari for ...

  3. 相似文档查找算法之 simHash及其 java 实现

    传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法.产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的:如果不相等,除了说明原始内容不相等外 ...

  4. 使用jconsole分析内存情况

    http://www.cnblogs.com/dava/p/6686436.html

  5. LeetCode刷题:Reverse Words in a String(翻转字符串中的单词)

    题目 Given an input string, reverse the string word by word. For example, Given s = "the sky is b ...

  6. xshell 连接出现 The remote SSH server rejected X11 forwarding request

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ yum install xorg-x11-xauth 同时sshd的config文件开启X11Forwarding yes vim ...

  7. mysql性能优化之服务器参数配置-内存配置

    MySQL服务器参数介绍 MySQL获取配置信息路径 命令行参数 mysqld_safe --datadir=/data/sql_data 配置文件 mysqld --help --verbose | ...

  8. Fuel

    1. fuel简介 fuel是Mirantis公司提供的一款开源的自动化安装部署OpenStack的工具.为OpenStack相关的社区项目和插件的部署和管理提供了一种直观的GUI驱动体验. Fuel ...

  9. Codeforces C. Jzzhu and Cities(dijkstra最短路)

    题目描述: Jzzhu and Cities time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  10. 2019年牛客多校第一场 H题XOR 线性基

    题目链接 传送门 题意 求\(n\)个数中子集内所有数异或为\(0\)的子集大小之和. 思路 对于子集大小我们不好维护,因此我们可以转换思路变成求每个数的贡献. 首先我们将所有数的线性基的基底\(b\ ...