您的位置:知识库 » .NET技术

数据库设计与Linq增强使用

作者: allentranks  来源: 博客园  发布时间: 2009-11-03 09:51  阅读: 2617 次  推荐: 0   原文链接   [收藏]  

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

其中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接口的数据对象,辅以扩展方法,代码通用性得到很大提高

个人觉得还蛮有意义……

0
0
 
标签:Linq C# 数据库

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻