ServiceStack.OrmLite 基本操作
原文:https://www.cnblogs.com/wang2650/category/780821.html
原文:https://www.cnblogs.com/xxfcz/p/7045808.html
在NuGet上需要安装这两个包:
ServiceStack.OrmLite
ServiceStack.OrmLite.SqlServer
注意一下环境哦,这里我使用的版本是 4.0.62,不同版本语法上肯定是有差异的,
还有就是为什么装的是个老版本,本地的VS装不了最新的版本,新版本好像要用到Core 2.0。以后再试试最近的版本了,空了来。

全部代码:
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; }
}
}
}
ServiceStack.OrmLite 基本操作的更多相关文章
- ServiceStack.OrmLite中的一些"陷阱"(2)
注:此系列不是说ServiceStack.OrmLite的多个陷阱,这仅仅个人认为是某一个陷阱(毕竟我踩坑了)而引发的思考. 前文说到了项目需要使用两种不同的数据库语言,虽说前文问题已基本解决了,但是 ...
- ServiceStack.OrmLite中的一些"陷阱"(1)
使用过ServiceStack.Ormlite的人都应该知道,其作为一个轻量级的ORM,使用的便捷度非常高,用起来就一个字:爽!而支撑其便捷度的,是库内大量地使用了扩展方法及静态变量. 首先先从源头入 ...
- ServiceStack.OrmLite 学习笔记7-复杂点的使用1
复杂点的使用1 先看看这2个类 class Customer { public int Id { get; set; } ... } class CustomerAddress { public in ...
- ServiceStack.OrmLite 笔记2 -增
ServiceStack.OrmLite 笔记2 这篇主要介绍 增加 db.Insert(new Employee { Id = 1, Name = "Employee 1" }) ...
- ServiceStack.OrmLite 笔记
ServiceStack.OrmLite 笔记1 ServiceStack.OrmLite 这个东东就是个orm框架,可以实现类似ef的效果.具体的就不这里班门弄斧了. 支持 SqlServerDia ...
- ServiceStack.OrmLite 调用存储过程
最近在做关于ServiceStack.OrmLite调用存储过程时,有问题.发现ServiceStack.OrmLite不能调用存储过程,或者说不能实现我想要的需求.在做分页查询时,我需要传入参数传出 ...
- ServiceStack.OrmLite
ServiceStack.OrmLite 谈谈我的入门级实体框架Loogn.OrmLite 每次看到有新的ORM的时候,我总会留意一下,因为自己也写过一个这样的框架,人总是有比较之心的.我可能会d ...
- ServiceStack.OrmLite T4模板使用记录
前言 最近研究了下ServiceStack.OrmLite,文档中也提到了使用T4模板对数据库中已经有了表进行实体的映射,这里也顺便记录下使用的步骤和情况. 开始使用 引用T4模板 首先我们创建一个工 ...
- ServiceStack.OrmLite 入门(一)
软件环境: Win7 x64 SP1 SQL Server 2008r2 Visual Studio 2017 Professional 目标:取出示例数据库 ReportServer 的表 Role ...
随机推荐
- Shell编程入门基础上
前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...
- HTML5 极简的JS函数
页面初始化 mui框架将很多功能配置都集中在mui.init方法中,要使用某项功能,只需要在mui.init方法中完成对应参数配置即可,目前支持在mui.init方法中配置的功能包括:创建子页面.关闭 ...
- Etcd 使用入门
etcd简介 etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库.etcd内部采用raft协议作为一致性算法,etcd基于Go语 ...
- eclipse不提示问题
按照上面截图输入26个字母大小写,即可.
- 【面试突击】- Java面试总则
Java基础 1.Map.Set.List集合差别及联系详解 2.HashSet类是如何实现添加元素保证不重复的 3.HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安 ...
- Oracle数据库之操作符及函数
一.操作符: 1.分类: 算术.比较.逻辑.集合.连接: 2.算术操作符: 执行数值计算: -- 工资加1000 from emp; 3.比较操作符: -- 比较运算符(between and包头不包 ...
- 2. ES6基础-let和const命令
目录 1. let命令 1.1 用法 1. 2 不存在变量提升 1.3 区域绑定 1.4 不允许重复声明 2. const命令 2.1 用法 2.2 与let类似的特性 2.3 const本质 2.4 ...
- 供应链管理如何提高效率?APS系统成优化引擎
APS系统,虽然它的起兴只有短短的十几年,但是在这段时间里面,它为很多企业解决了很多人工手动.脑力不可解决的问题. 所以APS被誉为供应链优化引擎,APS常常被称为高级计划与排程,但也有称为高级计划系 ...
- 判断RecyclerView到达底部的几种方法
参考文章:https://www.jianshu.com/p/c138055af5d2 1.比较lastItem的pos 通过比较当前屏幕可见最后一个item的position和整个RV的最后一个it ...
- GitHub Java项目推荐|不需要 ROOT权限的类似按键精灵的自动操作
不需要 ROOT 权限的类似按键精灵的自动操作软件,可以实现自动点击.滑动.输入文字.打开应用等.Auto.js 的大部分用户用它来点赞.签到.刷游戏 项目分析 仓库名称:Auto.js 标星(sta ...