当前位置:  开发笔记 > 数据库 > 正文

本土ORM与DataTables?

如何解决《本土ORM与DataTables?》经验,为你挑选了2个好方法。

这是问题的简化(有许多方法),但在需要与数据库交谈的应用程序中,我通常会看到以下两种模式之一:

    对象关系映射(ORM),其中(通常)数据库中的每个表都有一个对应的"行包装器"类,其公共属性与表中的列相匹配.有时这些类还会自动检索相关信息,以便外键列可以显示为相关数据(而不仅仅是PK值).

    DataTables(和/或DataSets),其中数据作为DataTable从服务器检索并以该形式(甚至在UI中)使用.

这两种方法之间的主要区别之一是ORM允许您在代码中引用强类型字段,如下所示:

Person bob = new Person();
bob.FirstName = "Bob";
collectionPeople.Add(bob);

而使用DataTable方法,您的代码将是这样的:

DataRow newrow = datatablePeople.NewRow();
newrow["FirstName"] = "Bob";
datatablePeople.Rows.Add(newrow);

在这种情况下,ORM方法受益于编译时检查,而DataTable方法则没有.另一方面,DataTable(和DataSet)是已经编写的数据结构,可以很好地直接表示关系数据,因此使用它们的代码通常可以更快地实现.此外,使用DataTables的代码可以被其他人轻松理解和修改; 自行开发(通常是COTS)ORM系统通常会在"引擎盖下"进行额外的数据库访问,以填充外键等等,这可能会给不知情的人带来问题.

那么你普遍喜欢哪种方法?为什么?



1> 小智..:

在使用数据时,Datatable在概念上肯定会更直接.而且它在ORM中找不到有时不自然的习语.(在更新之前将记录查询到本地内存;连接是指针;键值本身是指针,因此,添加记录需要加载父记录)

ORM的巨大优势是......

1)它为你编写sql,所以你真的不必编写任何sql来做基本的crud.当然,编写更复杂的语句必须在功能较弱的子语言(即hql)中完成

2)ORM的另一大优势是,当您获得结果时,它会将其映射到值对象,而无需编写一堆代码来映射值并处理类型转换.

如果你有强大的sql技能但想要优势2覆盖,我会选择ibatis



2> Corey Trager..:

我喜欢DataTables的方式,因为我老了,累了,对像Subsonic和Linq这样的时尚持怀疑态度.

除此之外,当您使用ORM时,通常会最大限度地减少在SQL中执行的操作.您没有在SQL中添加大量逻辑,也没有批处理多个SQL语句,以便在一次数据库中执行多项操作.因此,您倾向于更频繁地访问数据库,这是一个很大的性能影响.

使用数据集,我可以做类似的事情:

从table1中
选择col1,col2 ...选择col1,col2 ...从table2中
选择col1,col2 ... from table3

然后使用Tables [0],Tables [1],Tables [2]进行数据库的一次访问以获取所有三个DataSet,以引用它们.它在性能上有很大的不同.

有一天,与数据库的交互可能会如此之快,以至于没有必要对SQL进行批处理,但那一天还没有到来.当它到来时,我将切换到ORM,但在那之前,我愿意让我的代码变得更加丑陋以换取性能.用户使用缓慢的应用程序并不好玩.

最后,我喜欢SQL.我擅长SQL.真棒.我不想花时间弄清楚如何让Linq发出我想要的SQL.这会减慢我的表现.


您可以使用成熟的ORM进行一次往返,就像NHibernate一样.
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有