Restful.Data v2.0发布,谢谢你们的支持和鼓励
v1.0发布后,承蒙各位博友们的热心关注,也给我不少意见和建议,在此我真诚的感谢 @冰麟轻武 等朋友,你们的支持和鼓励,是这个开源项目最大的推动力。
v2.0在除了细枝末节外,在功能上主要做了一下更新:
1、实体类不再需要自己跟踪属性值变化:
[Serializable]
public class Person
{
[PrimaryKey, AutoIncrease]
public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual int? Age { get; set; } public virtual decimal? Money { get; set; } public virtual DateTime CreateTime { get; set; } public virtual bool IsActive { get; set; }
}
属性需要限定为 virtual ,以便生成代理。
如何新增数据:
[Test()]
public void Insert()
{
// 新增时,对象务必使用 EntityProxyGenerator 创建实体代理,否则无法跟踪属性变化
var person = EntityProxyGenerator.CreateProxy<Person>(); person.Name = "test";
//person.Age = 20;
person.Money = ;
person.CreateTime = DateTime.Now;
person.IsActive = false; using (ISession session = SessionFactory.CreateDefaultSession())
{
int i = session.Insert(person); // 输出生成的SQL语句
Console.WriteLine(SqlCmd.Current.Sql); int id = session.GetIndentifer<int>(); Assert.AreEqual(, i);
Assert.Greater(id, );
}
}
如何更新数据:
[Test()]
public void Update()
{
var person = EntityProxyGenerator.CreateProxy<Person>(); person.Name = "test";
person.Age = ;
person.Money = ;
person.CreateTime = DateTime.Now;
person.IsActive = true; using (ISession session = SessionFactory.CreateDefaultSession())
{
int i = session.Insert(person); int id = session.GetIndentifer<int>(); // Find 方法返回的对象都是原始对象而非代理对象
person = session.Find<Person>().Where(s => s.Id == id).Single(); Console.WriteLine(SqlCmd.Current.Sql); // 根据原始对象创建代理对象
person = person.ToEntityProxy<Person>(); person.Name = "test01";
person.Age = ;
person.Money = ;
i = session.Update(person); Console.WriteLine(SqlCmd.Current.Sql); person = session.Find<Person>().Where(s => s.Id == id).Single(); Console.WriteLine(SqlCmd.Current.Sql); Assert.AreEqual(, i);
Assert.AreEqual("test01", person.Name);
Assert.AreEqual(, person.Age.Value);
Assert.AreEqual(, person.Money.Value); person = EntityProxyGenerator.CreateProxy<Person>(); person.Name = "test";
person.Age = ;
person.Money = ;
person.CreateTime = DateTime.Now;
person.IsActive = true; i = session.Update<Person>().Set(person).Where(s => s.Id == id).Execute(); Console.WriteLine(SqlCmd.Current.Sql); Assert.AreEqual(, i);
Assert.AreEqual("test", person.Name);
Assert.AreEqual(, person.Age.Value);
Assert.AreEqual(, person.Money.Value);
Assert.AreEqual(true, person.IsActive);
}
}
2、SQL语句中的参数:
你可以这样写:
using (ISession session = SessionFactory.CreateDefaultSession())
{
string sql = "select count(*) from Person where Id = ? and CreateTime < ?"; int count = session.ExecuteScalar<int>(sql, , DateTime.Now); Assert.AreEqual(, count);
}
在任何数据库环境下,所有参数均使用问号替代参数名,但需保证问号的数量与传入的参数值数量一致,并顺序一致。
如何需要进行条件拼接,可以这样写:
StringBuilder builder = new StringBuilder();
builder.Append("select * from Person where ");
IList<object> parameters = new List<object>();
if (model.Id != )
{
builder.Append("Id = ?, ");
parameters.Add(model.Id);
}
if (string.IsNullOrEmpty(model.Name) == false)
{
builder.Append("Name = ?, ");
parameters.Add(model.Name);
}
return session.ExecuteDataTable(builder.ToString(), parameters);
OK,就介绍这两点,其他功能请自己摸索。
后期将陆续发布oracle与sqlserver的provider,功能上将不再做大的更新和变动。
如有不明白的,请参见我的上两篇帖子。
我马上也要专心去找工作养家糊口了,在家呆了快一个月了,各位博友有好的工作机会帮忙推荐一下。
Restful.Data v2.0发布,谢谢你们的支持和鼓励的更多相关文章
- Restful.Data v1.0 - 轻量级数据持久层组件, 正式开源发布了
经过几个星期的优化调整,今天 Restful.Data 正式开源发布. 源码地址:https://github.com/linli8/Restful 今天不写那么多废话了,还是重新介绍一下 Restf ...
- iBox v2.0 发布,Web化仿iOS7界面/交互的JavaScirpt库
iBox2 是一个仿 iOS 7 界面/交互的 JavaScirpt 库,它运行在 webkit 内核的移动浏览器之上,依赖 iScroll5,帮助开发者构建更接近 iOS 体验的 WebApp. 伴 ...
- Pyston v2.0 发布,解决 Python 慢速的救星
Pyston 自从 2017 年发布 0.6.1 版本后,已经淡出了人们的视线三年多了,导致现在新人都很少听过它的大名. 前两天(2020年10月28日)Pyston 在官方博客上(https://b ...
- CoreWCF 1.0.0 发布,微软正式支持WCF
2022年4月28日,我们达到了一个重要的里程碑,并发布了CoreWCF的1.0.0版本.对Matt Connew (微软WCF团队成员)来说,这是5年前即 2017年1月开始的漫长旅程的结束.Mat ...
- CodeManage 源代码管理器v2.0发布
下载地址 欢迎大家提出宝贵的意见和bug
- kkfileview v2.0 发布,文件在线预览项目方案
kkfileview文件在线预览 此项目为文件文档在线预览项目解决方案,项目使用流行的spring boot搭建,易上手和部署,部署好后可以独立提供预览服务,使用http接口访问,不需要和应用集成,具 ...
- 重大更新!Druid 0.18.0 发布—Join登场,支持Java11
Apache Druid本质就是一个分布式支持实时数据分析的数据存储系统. 能够快速的实现查询与数据分析,高可用,高扩展能力. 距离上一次更新刚过了二十多天,距离0.17版本刚过了三个多月,Druid ...
- 【Beta】“北航社团帮”发布声明——小程序v2.0与网页端v1.0
目录 Beta版本新功能 小程序v2.0新功能 新功能列表 功能详情图 新功能动图展示 网页端v1.0功能 登录方式 社团信息的修改 新闻的录入和修改 活动的录入和修改 这一版修复的缺陷 Beta版本 ...
- 魔方NewLife.Cube升级v2.0
魔方是一套集成权限管理的MVC管理后台,最具特色功能是模版覆盖机制,是XCode实体类的最佳搭档! v2.0.2017.1126 借助Ajax支持高级操作,如:删除选中.批量启用禁用等 用户管理增 ...
随机推荐
- 分布式事务操作之Spring+JTA
什么是分布式事务?在网上找了一段比较容易理解的"定义". 分布式事务是指事务的参与者.支持事务的服务器.资源管理器以及事务管理器分别位于分布系统的不同节点之上,在两个或多个网络计算 ...
- 解决Tomcat数据连接池无法释放
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况.前些日子因为手头上 有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Rel ...
- 如何在fedora下安装fcitx和搜狗拼音
过程参考了: http://blog.csdn.net/yang1982_0907/article/details/17100409 下载搜狗deb包:http://packages.linuxdee ...
- php生成器的使用
按照php的文档说明 一个生成器函数看起来像一个普通的函数,不同的是普通函数返回一个值,而一个生成器可以yield生成许多它所需要的值. 当一个生成器被调用的时候,它返回一个可以被遍历的对象.当你遍历 ...
- 深入理解JavaScript中的==运算符
原文章地址 在详细介绍图1中的每个部分前,我们来复习一下JS中关于类型的知识: JS中的值有两种类型:基本类型.对象类型. 基本类型包括:Undefined.Null.Boolean.Number和S ...
- SharePoint 2013异常信息的查看
刚刚学习SharePoint开发的时候,经常遇到一些异常,却不能直接看到详细信息,很郁闷.这里做下简单的整理,方便查找: 1.代码未处理异常出现黄页——”‘/’应用程序中的服务器错误.运行时错误“. ...
- Linux系统目录结构
Linux系统目录结构图 目录:/ 是Linux的根目录 每个文件和目录从根目录开始,只有root用户具有该目录下的写权限: /root是root用户的主目录,这与 / 目录不一样: 目录:/bin ...
- java的继承
1.什么是继承:一个类从另外一个类中得到成员.属性和行为方法等. 案例: //父类 public class Animal { // 变量 public int height=1; // 方法 pub ...
- LInux配置jdk(mac和windows)
我的linux使用的是VMware搭建的虚拟环境,用的是CENTOS6.5 一.准备工作: 1.确定系统安装的是成功的. 2.系统没有其他的问题 3.确定没有安装过其他版本的jdk,两个jdk会反冲 ...
- Win7 64位 VS2013环境使用cuda_7.5.18
首先得吐槽下VS2015出来快一年了CUDA居然还不支持,没办法重装系统刚从2013升到2015,还得再装回一个2013用,只为学习CUDA... 然后安装的时候,如果你选择自定义组件安装,注意不要改 ...