Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么是更好的做法?使用数据集或数据库_C#_.net_Ado.net - Fatal编程技术网

C# 什么是更好的做法?使用数据集或数据库

C# 什么是更好的做法?使用数据集或数据库,c#,.net,ado.net,C#,.net,Ado.net,我一直在开发许多应用程序,对使用数据集感到困惑。 到目前为止,我不使用数据集,而是使用数据库引擎上运行的查询和过程直接从数据库进入应用程序 但我想知道,什么是好的做法 使用数据集? 或 在数据库上直接工作 请尝试给我一些在操作中使用数据集的情况(插入/更新) 我们是否可以针对数据库对数据集设置读/写锁定?您应该采用存储过程,或者使数据库变为哑巴。这意味着数据库中没有任何逻辑,只有CRUD操作。如果使用哑数据库模型,则数据集是坏的。您最好使用真实对象,这样您就可以向它们添加业务逻辑。这种方法比使用

我一直在开发许多应用程序,对使用数据集感到困惑。 到目前为止,我不使用数据集,而是使用数据库引擎上运行的查询和过程直接从数据库进入应用程序

但我想知道,什么是好的做法 使用数据集? 或 在数据库上直接工作

请尝试给我一些在操作中使用数据集的情况(插入/更新)


我们是否可以针对数据库对数据集设置读/写锁定?您应该采用存储过程,或者使数据库变为哑巴。这意味着数据库中没有任何逻辑,只有CRUD操作。如果使用哑数据库模型,则数据集是坏的。您最好使用真实对象,这样您就可以向它们添加业务逻辑。这种方法比使用存储过程直接在数据库上操作更复杂,但随着系统的增长,您可以更好地管理复杂性。如果您有一个包含大量小规则的大型系统,则存储过程将变得非常难以管理。

根据经验,我会将涉及数据一致性、完整性等的逻辑放在尽可能接近该数据的位置,即数据库中。此外,如果我必须以相互依赖的方式获取数据(即从表a、B和C中获取数据,其中a、B和C之间的贡献在请求时是已知的),那么节省调用开销并通过数据库对象(如函数、过程)一次完成是有意义的(正如OMGPonies已经指出的)。对于删除一两级的逻辑,在“程序化”处理更直观的地方(例如在数据集中)使用它是有意义的。说了这么多,经验法则有时就是他们的首字母缩略词所推断的……腐烂


在过去的.Net项目中,我经常在数据库中进行数据导入/转换(例如,银行交易数据文件的数据导入/转换)(一个调用,所有逻辑都封装在过程中,并受交易保护),但在第二阶段中,在我的.Net代码中使用datatables等“解析”同一数据中的项(虽然现在我很可能会跳过数据集阶段,使用类对象从更高的抽象层次来处理它们)。

在MVC仅仅是Haack眼中的一个瞬间之前,让
数据集处理排序、多重关系和缓存等非常方便

美国房地产开发商不在乎数据库上的锁之类的琐事。不,我们有冲突解决策略,通常只是在最近的编辑中打上烙印。用户友好性?


但是在这些有着像样的通用集合、过多的ORM和关注点分离的意识的日子里,它们真的没有太多的位置了。可以公平地说,每当我最近看到一个
数据集时,我都会替换它。而且不会错过它。

我看到数据集在一个应用程序中使用得很好,但这是事实在7年的时间里,开发了许多不同的应用程序(至少两位数)

现在有很多最佳实践表明twords是用对象而不是数据集来开发企业开发的。对象和ORM(如NHibernate或Entity Framework)可以非常强大,并且在创建CRUD存储过程时需要花费大量精力。这是我喜欢的开发应用程序的方式我可以用这种方式在域层中很好地分离业务逻辑


这并不是说数据集没有它们的位置,我确信在某些情况下,它们可能比对象更适合,但对我来说,在使用它们之前,我需要非常确定这一点。

我也一直在想这个问题,因为我几个月来从未在源代码中需要数据集

实际上,如果您的对象是O/R映射的,并且使用序列化和泛型,那么您将永远不需要数据集

但是数据集在生成报告方面有很大的用途

这是因为,报告没有可以或应该进行O/R映射的特定结构


我只将数据集与报告工具结合使用。

假设应用程序位于不同的物理计算机上,在应用程序之间来回发送数据会很昂贵,因为数据是通过有线传输的。此设置中还存在数据并发性问题,因为在传输数据时数据可能已更改t返回到客户端。如果逻辑可以封装在存储过程中,那么最好利用它。我对数据集的了解不够,无法评论它的功能。数据集是.Net framework的黑眼。请不惜一切代价避免。我一直在使用datatables而不是DataSet进行报告。通过在数据库直接使用与视图链接的数据表进行报告。