这是对问题的简化(有很多做事的方法),但是在需要与数据库通信的应用程序中,我通常会看到以下两种模式之一:
这两种方法之间的主要区别之一是 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 系统通常会“在后台”进行额外的数据库访问以填充外键等,这可能会给不知情的人带来问题。
那么您通常喜欢哪种方法,为什么?
最佳答案
Datatable 在处理数据时在概念上肯定会更直接。而且它没有您在 ORM 中发现的有时不自然的习语。 (在更新之前将记录查询到本地内存中;连接是指针;键值本身是指针,因此,添加记录需要加载父记录)
ORM 的一大优势是……
1)它为你写了sql,所以你真的不需要写任何sql来做基本的crud。当然,编写更复杂的语句必须使用功能较弱的子语言(即 hql)
2) ORM 的另一大优势是当您返回结果时,它会将其映射到值对象中,而无需编写一堆代码来映射值和处理类型转换。
如果你有很强的 sql 技能但想要覆盖优势 2,我会选择 ibatis
关于.net - 本土 ORM 与 DataTables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/271806/