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发布,谢谢你们的支持和鼓励的更多相关文章

  1. Restful.Data v1.0 - 轻量级数据持久层组件, 正式开源发布了

    经过几个星期的优化调整,今天 Restful.Data 正式开源发布. 源码地址:https://github.com/linli8/Restful 今天不写那么多废话了,还是重新介绍一下 Restf ...

  2. iBox v2.0 发布,Web化仿iOS7界面/交互的JavaScirpt库

    iBox2 是一个仿 iOS 7 界面/交互的 JavaScirpt 库,它运行在 webkit 内核的移动浏览器之上,依赖 iScroll5,帮助开发者构建更接近 iOS 体验的 WebApp. 伴 ...

  3. Pyston v2.0 发布,解决 Python 慢速的救星

    Pyston 自从 2017 年发布 0.6.1 版本后,已经淡出了人们的视线三年多了,导致现在新人都很少听过它的大名. 前两天(2020年10月28日)Pyston 在官方博客上(https://b ...

  4. CoreWCF 1.0.0 发布,微软正式支持WCF

    2022年4月28日,我们达到了一个重要的里程碑,并发布了CoreWCF的1.0.0版本.对Matt Connew (微软WCF团队成员)来说,这是5年前即 2017年1月开始的漫长旅程的结束.Mat ...

  5. CodeManage 源代码管理器v2.0发布

    下载地址 欢迎大家提出宝贵的意见和bug

  6. kkfileview v2.0 发布,文件在线预览项目方案

    kkfileview文件在线预览 此项目为文件文档在线预览项目解决方案,项目使用流行的spring boot搭建,易上手和部署,部署好后可以独立提供预览服务,使用http接口访问,不需要和应用集成,具 ...

  7. 重大更新!Druid 0.18.0 发布—Join登场,支持Java11

    Apache Druid本质就是一个分布式支持实时数据分析的数据存储系统. 能够快速的实现查询与数据分析,高可用,高扩展能力. 距离上一次更新刚过了二十多天,距离0.17版本刚过了三个多月,Druid ...

  8. 【Beta】“北航社团帮”发布声明——小程序v2.0与网页端v1.0

    目录 Beta版本新功能 小程序v2.0新功能 新功能列表 功能详情图 新功能动图展示 网页端v1.0功能 登录方式 社团信息的修改 新闻的录入和修改 活动的录入和修改 这一版修复的缺陷 Beta版本 ...

  9. 魔方NewLife.Cube升级v2.0

    魔方是一套集成权限管理的MVC管理后台,最具特色功能是模版覆盖机制,是XCode实体类的最佳搭档! v2.0.2017.1126   借助Ajax支持高级操作,如:删除选中.批量启用禁用等 用户管理增 ...

随机推荐

  1. 对 web.config 节点信息进行加密

    记录一下,免得以后再网上找 项目中,数据库访问链接字符串配置在web.config中,明文的,应客户需求需改成密文,so,需要加密. 一开始想的是需要重写configuration什么什么的,最后发现 ...

  2. css鼠标手型cursor中hand与pointer

    css鼠标手型cursor中hand与pointer Example:CSS鼠标手型效果 <a href="#" style="cursor:hand"& ...

  3. linux 定时清理session

    php session 运营想让用户登陆网站就能永久保持登陆会话,感觉这是扯淡,因为视频播放1小时,所以我设置了两小时过期. 但是用户过多,导致session文件大量存储.产生上百万千万.服务器空间很 ...

  4. SQL关于limit的用法

    SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset    在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时 ...

  5. oracle 存储过程 包 【转】

    一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...

  6. ASP.NET Web API 2 入门

    本文参考:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web ...

  7. .net 批量打印可实现方案

    最近几年一直在教育行业工作,主要负责竞赛类系统的开发工作,包括网上报名,安排考场,在线考试,学业报告书等. 打印功能在这个信息化时代非常普遍,浏览器都自带打印功能,通常的做法是调用 window.pr ...

  8. [PL/SQL] 如何规避异常ORA-01403

    如果mytable表中不存在 ID = 123 的数据,那么 SELECT Flag INTO flag FROM mytable WHERE ID = 123 将抛出异常ORA-01403 SELE ...

  9. Android照片墙加强版,使用ViewPager实现画廊效果

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12646775 记得关于照片墙的文章我已经写过好几篇了,有最基本的照片墙,有瀑布流模 ...

  10. PD4F将HTML转换为PDF乱码问题

    修改pd4fonts.properties文件如下: KaiTi_GB2312=SIMKAI.TTFSimSun=SIMKAI.TTF