25000了,散分,分享:.net里微软的O/R Mapping,并求一个程序

athossmth 2005-05-11 11:42:02

  赫赫,标题很罗嗦……散分就不说了。先分享一下刚发现的.net中的O/R Mapping的技术吧。也许说O/R Mapping不是很贴切。嗯,按顺序说吧。

  cuike519老大,去年5、1前后,推出了一个PowerGrid的开源的控件,它是一个DataGrid的扩充,实现了,只要提供连接字符串,和“数据源”,就可以自动列表、排序、分页的功能。这里“数据源”可以是Table名字、sql语句、或者stored procedure名。而所谓“只要提供连接字符串”,就是说cuike519兄实现了factory的设计模式。

  PowerGrid很好,可惜只有Read的功能,不能Write,鉴于此我在做一个可以Select、Paging、Insert、Delete、Edit、Sort、Update、Filter的datagrid的扩充,暂定名SpiderSurfGrid。

  为了insert/delete/edit/update,需要了解读到的datacolumn的信息,比如,如果是操作一个table,除了需要知道它的各个column的名字之外,还需要知道哪些是primary key。这个并不难,sql server的help里已经有了,对此我写了一个库,根据连接字符串缓存数据库的结构,前阵子分享了出来:《分享+开源:持久性数据访问层(athossmth)》http://community.csdn.net/Expert/TopicView.asp?id=3970150。

  但是上面只是针对table,如果是普通的sql语句呢?比如select title t, author a from book,这里,title列和author列都重命名了,无从知道原来来自哪一个table。

  无意之中,我发现,如果使用DataGrid的CreateColumnSet这个方法,那么,它已经确认了某个BoundColumn列是否ReadOnly!(有一个小小的准备工作,CreateColumnSet需要调用DataGrid的一个private的方法CreatePagedDataSource,这个可以用reflector读出代码自己写一个)

  再跟踪下去,发现其实奥妙在我们每天都用的DataTable类!它有一个private的PropertyDescriptorCollection类型的成员,叫propertyDescriptorCollectionCache,这里面,已经从数据库中读到了,这个列,是否是PrimaryKey、是否是Identity类型、数据类型等等……

  太神奇了,微软做了什么?这就是一个犀利的O/R Mapping的基础阿——分析任意的SQL查询语句!

赫赫,分享就到这里,再求一个程序。记得很久以前(1998年之前吧),有一个60k还是多大的(具体大小不记得,但是非常小),一个dos下的.com程序,模拟了3D的物体和飞行的视觉,还带音效,忽然想找,但是却不知如何找起——一个可以google的关键词都没有。那位朋友有还请分享一下,我的email是amy_seahawk@yahoo.com,谢谢。
...全文
585 66 打赏 收藏 转发到动态 举报
写回复
用AI写文章
66 条回复
切换为时间正序
请发表友善的回复…
发表回复
syfsz 2005-05-12
  • 打赏
  • 举报
回复
这么多分,我还从来没有超过 过500分呢
rd16 2005-05-12
  • 打赏
  • 举报
回复
楼主真是牛人,1998年就已经会程序啦
tuoshi 2005-05-12
  • 打赏
  • 举报
回复
up
january03 2005-05-12
  • 打赏
  • 举报
回复
哇,娘子出来看上帝
cjzlxy 2005-05-12
  • 打赏
  • 举报
回复
up
jonescheng 2005-05-12
  • 打赏
  • 举报
回复
Mark.....thanks
wssmax 2005-05-12
  • 打赏
  • 举报
回复
thank share.
fphuang 2005-05-12
  • 打赏
  • 举报
回复
学习!
brando_beat 2005-05-12
  • 打赏
  • 举报
回复
学习中
fengyi999 2005-05-12
  • 打赏
  • 举报
回复
学习中
Paradise_heida 2005-05-12
  • 打赏
  • 举报
回复

楼主哥哥是小弟的榜样!!!
chxuxu 2005-05-12
  • 打赏
  • 举报
回复
这么多分 怎么得的?
bidisty 2005-05-11
  • 打赏
  • 举报
回复
UP
hchxxzx 2005-05-11
  • 打赏
  • 举报
回复
恭喜,恭喜
zhanmincode 2005-05-11
  • 打赏
  • 举报
回复
友情mark一下
zipo 2005-05-11
  • 打赏
  • 举报
回复
接分
_-_-_-_- 2005-05-11
  • 打赏
  • 举报
回复
thanks
mark
jzywh 2005-05-11
  • 打赏
  • 举报
回复
learnning
zr1982930 2005-05-11
  • 打赏
  • 举报
回复
接分咯!
gyf19 2005-05-11
  • 打赏
  • 举报
回复
来晚了一步!!楼上给你了
加载更多回复(46)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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