发个自己写的ORM框架(很烂)

jiaoshiyao 2013-08-27 10:36:40
不多说目前我仅仅实现了SqlServer2012的部分
发下增删改查和事务的代码吧
ISession session = new Session(DBString);
//查询并且分页
Source s = session.Select(typeof(Source).Name).Skip(1, 1, Source.IDProty).ExecuteDataTable<Source>().First();
//删除
session.Delete(typeof(Source).Name).AddWhere(Source.IDProty, s.ID, WhereEnum.等于);
s.Title = "10000000000";
//修改
session.Update(typeof(Source).Name, s);
//添加
ISession sessions = new Session(DBString);
sessions.Insert(typeof(Source).Name, s);
ITransaction transactio = new Transaction();
//删除和添加操作放到了一起做事务
transactio.SetOperation(session);
transactio.SetOperation(sessions);
//事务
System.Console.WriteLine(transactio.Execute().ToString());
System.Console.WriteLine("Over");
System.Console.ReadLine();

下载地址http://pan.baidu.com/share/link?shareid=316925710&uk=218914862
...全文
215 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-08-27
  • 打赏
  • 举报
回复
引用 5 楼 jiaoshiyao 的回复:
[quote=引用 4 楼 caozhy 的回复:]
我没想到什么好的方法来实现 实在不行
public ISession AddWhere(string WhereValue){
    this.Sql +=WhereValue;
}
调用的时候

session.Select(typeof(Source).Name).AddWhere("a = 1 or (b = 2 and c = 3)");
我想我写这样的方法才适合我的等级。。。。。。。。。。[/quote] 像hibernate的做法就是内部dsl,让用户以字符串的形式传入查询。那么你内部还需要转化成查询表达式。linq的好处就是,编译器帮你把解析的工作代劳了,你可以直接得到表达式树。
jiaoshiyao 2013-08-27
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
我没想到什么好的方法来实现 实在不行
public ISession AddWhere(string WhereValue){
    this.Sql +=WhereValue;
}
调用的时候

session.Select(typeof(Source).Name).AddWhere("a = 1 or (b = 2 and c = 3)");
我想我写这样的方法才适合我的等级。。。。。。。。。。
threenewbee 2013-08-27
  • 打赏
  • 举报
回复
不用linq也许不是本质的问题。 本质的问题是,你的程序如何处理很复杂的查询。比如a = 1 or (b = 2 and c = 3)
jiaoshiyao 2013-08-27
  • 打赏
  • 举报
回复
引用 2 楼 wddw1986 的回复:
cheng2005 2013-08-27
  • 打赏
  • 举报
回复
确实挺烂,我说的烂不是说你代码写的烂,而是你这个东西的使用方式真烂。 第一,使用的使用需要使用者通过反射来提供参数,烂! 第二,语法不明确,既不是SQL形式,也不是LINQ形式,写这些东西和看这些操作的人会十分痛苦,烂!
jiaoshiyao 2013-08-27
  • 打赏
  • 举报
回复
小弟代码很烂 别喷啊

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧