C# 在UI层中使用DataTable而不是实体

C# 在UI层中使用DataTable而不是实体,c#,ado.net,datatable,data-access-layer,C#,Ado.net,Datatable,Data Access Layer,我的基本3层应用程序由一个DAL组成,它与我的BLL对话,BLL与UI交互 到目前为止,我一直在使用老式的方式,通过数据读取器和update/insert命令构建DAL。这很有效,因为我的大部分需求都在哪里阅读 现在我需要越来越多的更新数据库信息和检查一些基本的并发性。我正在考虑使用datatables使UI在编辑和持久化db表中的数据时更加灵活 现在,我的UI中有一个列表,每当需要时,我都会将此列表发送到BLL->DAL以进行更改 在我看来,我认为我必须让我的BLL将datatable返回到U

我的基本3层应用程序由一个DAL组成,它与我的BLL对话,BLL与UI交互

到目前为止,我一直在使用老式的方式,通过数据读取器和update/insert命令构建DAL。这很有效,因为我的大部分需求都在哪里阅读

现在我需要越来越多的更新数据库信息和检查一些基本的并发性。我正在考虑使用datatables使UI在编辑和持久化db表中的数据时更加灵活

现在,我的UI中有一个
列表
,每当需要时,我都会将此列表发送到BLL->DAL以进行更改

在我看来,我认为我必须让我的BLL将datatable返回到UI,以使我的UI更容易响应更新


我的主要问题是如何将三层逻辑(UI-BLL-DAL)与DataAdapter/DataSets/DataTables模型的优点进行逻辑绑定…

起初这似乎是正确的,但这样做只会破坏分层体系结构。通过将类型化数据集(
datatable
)携带到
UI
,您只需启用
UI
即可直接使用
CRUD
操作。这样就不需要使用其他层

这只会破坏抽象


使用N层体系结构是一种选择,是否使用它取决于您的需求。也许,首先你需要决定你是否真的需要它;除非你能想出一个正确的推理,否则你不需要使用它。

起初这似乎是正确的,但这样做只会破坏分层架构。通过将类型化数据集(
datatable
)携带到
UI
,您只需启用
UI
即可直接使用
CRUD
操作。这样就不需要使用其他层

这只会破坏抽象


使用N层体系结构是一种选择,是否使用它取决于您的需求。也许,首先你需要决定你是否真的需要它;除非你能提出正确的推理,否则你不需要使用它。

我明白了。听着,我需要分层的方法。我可能有一些简单的应用程序,但它们有很多用于解决不同领域的问题。因此,我希望有一个坚实的DAL和BLL,并相应地应用我的UI需求(表单、WPF、WCF e.t.c)。据我所知,如果我需要域方法/分层方法,我应该传统地使用datareaders e.tc。或者切换到ORM?嗯,切换到ORM可能会有所帮助,这取决于项目的规模和需求,而不是采用datareader方法。这次规模不大。一个表读/写,并从5-6个表中读取,以获得正确的数据来写入…只是想探索有关方法的情况。我认为它是DataReader和ORM…那么数据库中的表的总数最多限制为6个?是的,一个在SQl Server中,另一个在AS400 DB2中,用于为我看到的SQl Server表选择值和准备数据。听着,我需要分层的方法。我可能有一些简单的应用程序,但它们有很多用于解决不同领域的问题。因此,我希望有一个坚实的DAL和BLL,并相应地应用我的UI需求(表单、WPF、WCF e.t.c)。据我所知,如果我需要域方法/分层方法,我应该传统地使用datareaders e.tc。或者切换到ORM?嗯,切换到ORM可能会有所帮助,这取决于项目的规模和需求,而不是采用datareader方法。这次规模不大。一个表读/写,并从5-6个表中读取,以获得正确的数据来写入…只是想探索有关方法的情况。我认为要么是DataReader,要么是ORM…那么数据库中的表的总数最多限制为6个?Yeap,一个在SQl Server中,另一个在AS400 DB2中,用于为SQl Server表选择值和准备数据