开源项目 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).配置管 ...
随机推荐
- 解决本地Bootstrap字体图标不可见的问题
原文:https://www.jianshu.com/p/70ac459d33e7 作为Bootstrap的初学者,我最近遇到了一个问题:在使用Bootstrap字体图标时,图标不可见.使用代码如下: ...
- js的splice和delete
例如有一个数组是 :var textArr = ['a','b','c','d']; 这时我想删除这个数组中的b元素: 方法一:delete 删除数组 delete textArr[1] 结果为: ...
- 变量.argsort()的用法
a=[1,2,5,9,7,3]a=np.array(a)order = a.argsort() # 从小到大排序,并返回索引值print('order=',order)order1= a.argsor ...
- Django后台管理admin或者adminx中使用富文本编辑器
在admin或者adminx后台中使用富文本编辑器 一.建立模型:(安装django-tinymce==2.6.0) from django.db import models from tinymce ...
- aria2 cmd set chmod, and others..
import 'package:flutter/material.dart'; import 'dart:io'; import 'dart:async'; import 'package:rxdar ...
- 【转载】C#中int.TryParse方法和int.Parse方法的异同之处
在C#编程过程中,int.TryParse方法和int.Parse方法都可以将字符串string转换为整型int类型,但两者还是有区别,最重要的区别在于int.TryParse方法在字符串无法转换为i ...
- 旋转图像 给定一个 n × n 的二维矩阵表示一个图像。
给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 : 给定 ma ...
- vue请求简单配置
简单记录一下vue的http请求配置相关 测试环境请求接口设置: 1. config/dev.env.js添加: module.exports = merge(prodEnv, { NODE_ENV ...
- Java 缓存实例
重复创建相同的对象没有太大的意义,反而加大了系统开销,某些情况下,可以缓存该类的实例,实现复用. 实现缓存实例:定义一个private static成员变量存储类的实例(多个可用数组)先检测上面的成员 ...
- selenium三个等待方法
为什么需要等待时间:页面加载需要时间,如果页面没有加载完成,直接去定位,可能定位不到元素 1.强制等待: import time time.sleep(2) 不管有没有完成加载,必须等待2秒 2.隐式 ...