C# 类型化数据集的正确使用

C# 类型化数据集的正确使用,c#,visual-studio,strongly-typed-dataset,typed-dataset,C#,Visual Studio,Strongly Typed Dataset,Typed Dataset,如果我理解正确,我是否必须使用表适配器将数据获取到类型化数据集中,我不能只创建强类型数据集并自动加载数据?(我还在VS2012中使用.NET3.5项目) 例如,我必须这样做才能获取数据(如果我这样做,我就会获取数据) 与仅仅这样做相比,(如果我这样做,我什么也得不到…我可以理解它是否懒惰加载…??) 所有数据集(类型和非类型)都与数据库无关,即任何数据表都可以从Oracle中填充,就像从MS Sql中填充一样简单。数据集不了解架构或连接字符串 您需要一个适配器来读取备份存储 (而DataTabl

如果我理解正确,我是否必须使用表适配器将数据获取到类型化数据集中,我不能只创建强类型数据集并自动加载数据?(我还在VS2012中使用.NET3.5项目)

例如,我必须这样做才能获取数据(如果我这样做,我就会获取数据)

与仅仅这样做相比,(如果我这样做,我什么也得不到…我可以理解它是否懒惰加载…??)

所有数据集(类型和非类型)都与数据库无关,即任何数据表都可以从Oracle中填充,就像从MS Sql中填充一样简单。数据集不了解架构或连接字符串

您需要一个适配器来读取备份存储


(而DataTable.Select()可能是从Linq到数据集)。

类型化数据集的最佳用法:忽略,从不使用。去OTM吧。使用LINQ。数据集——类型化和非类型化——在.NET1.0中是不好的,从那时起,即使是MS也实现了替代方案。十年没用过一个,也不会用

例外:报告SQL是“外部输入”的应用程序,因此基本上只需要一个通用数据容器


使用EntityFramework或众多备选方案中的一个。

备受诟病、被误解的强类型数据集! 通常是的,您将使用
TableAdapter
加载数据并执行更新。 使用设计器,您可以向表适配器添加参数查询,以支持程序所需的操作,例如从customerid=@customerid

调用此
FillbyCustomerid

然后,您可以使用
TableAdapter
通过以下方式提取所选客户的数据:

dim ta as new dscustomerstableadapters.customertableadapter
dim ds as new dsCustomers
ta.fillbycustomerid (ds.customers, ourid)

我使用的是一个旧的Access Db,所以我的选项有限。但如果你有其他选择,我愿意选择吗?@NateGates不确定。我有10年没有接触过网络。我从来没有处理过垃圾。对不起,这就是访问权限。自从SQLCE以来,几乎没有任何一种情况下访问不仅仅是过时的东西。不知道-你可以试试NHibernate。这看起来很奇怪,它需要在我的设置中添加一个连接字符串,我可以在我的类型化数据集上使用linq吗?我是要一次加载一个表,还是有一种方法可以一次批量填充?您只能在填充数据集后使用Linq。最实用的方法是使用适配器。我想我越来越了解这些数据集,我希望找到更多与后端access数据库有着动态连接的数据集,以便自动加载表(或至少在第一次需要时),并通过数据集进行更改(通过datatable),可以立即在db中查看。好吧,数据集不是这样工作的。它们基本上是“断开连接的”——您将数据拉入其中,处理它,然后提交更新。(数据集似乎在这方面名声很差——见其他一些回复——但在这方面,似乎很多人都不知道如何使用它们。)是的,它们似乎更多的是快照,但是,在处理旧版Access文件时,这可能是我的最佳选择。如果您想寻找更直接的内容,您可能需要考虑使用datareader对象提取数据,并使用sqlcommands更新。在ADO.Net.Ref“快照”I中和不使用ADO.Net.Ref,还有许多其他方法您使用的ss w/e技术,最终您将数据拉入应用程序,处理数据,然后将其发送回。总会有一个更新命令在某处-它不会以任何其他方式到达那里。无论如何,数据集是与Access数据库交互的一种完全合理的方式。人们经常忽略的是您应该在tableadapters中创建参数查询,以便只提取您想要的数据—通常人们似乎认为您将整个表都拉入ds。否。同时,如果可能的话,我会选择SQL Express而不是Access tho。
EvtDataSet o = new EvtDataSet();
var r = o.tblFile.Select();
dim ta as new dscustomerstableadapters.customertableadapter
dim ds as new dsCustomers
ta.fillbycustomerid (ds.customers, ourid)