数据库设计与Linq增强使用

原创|其它|编辑:郝浩|2009-11-03 10:15:52.000|阅读 458 次

概述:最近对数据库的设计有些想法,貌似一般数据都有些通用字段

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

最近对数据库的设计有些想法,貌似一般数据都有些通用字段

其中ID是自增长主键(SQL,Oracle环境可以是Sequence生成的ID)

UpdateTime是最后一次更新时间

CreateTime是创建时间

State是数据状态(本来的设想里没有,看了这个文章觉得状态字段实在太需要了。。)

类型如下:

 

 

数据库就这样了。。有什么用呢~?继续看。。

在这个的基础上,可以抽象出一个 IData 接口:

IData 接口

 

因为数据库的表字段跟IData属性成员是一致的,直接对Linq生成的实体类进行接口签名:

IData 接口签名

 

签名放在

一般没人用的Linq设计器cs文件里面了。。好处是方便跟着那个大坨的Linq文件走。。

 

这个文件右键dbml文件 -> 查看代码就出现了,默认是不出现的(因为很惹人讨厌,之前不小心弄出来了我都会把它删掉。。现在用上了。。)

当然了,上面的借口签名不是一个一个写出来的,直接CodeSmith很简单的就出来了

 

接下来,针对IData进行扩展:

数据对象扩展

这样下来每个实体类可以直接增删改:(不知道这样用处大不大。。)

 

好了,现在我们的Linq实体类可以直接增删改,不用关心Linq的DataContext了,充血充的更厉害了……

 

但是查询的时候还是没办法彻底摆脱Linq的DataContext,再来~

不知道命名,就赶新潮也叫Repository(其实还是DataContext的范畴)

 

数据存储池

 

这样查询的功能全部被Repository接管了~(实现动态linq的Query方法后,可以直接用字符串查询)

基本上我们彻底离开DataContext了,用起来大概是这样:

TestClass

 

当然,对Repository还有还有很多事情可以继续做,让它成为一个真正的Repository

 

======

以上的做法,具体用处大不大还不知道

不过,不涉及到复杂跨表查询,是可以脱离Linq的DataContext了

而且使用中处理的实体类都是实现了IData接口的数据对象,辅以扩展方法,代码通用性得到很大提高

个人觉得还蛮有意义……


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP