2012-12-18 33 views
2

如果我理解这个权限,是否必须使用表格适配器将数据存入我的类型化数据集中,我不能只创建强类型数据集并让数据自动载入? (IM也使用VS2012一个.net 3.5项目)键入数据集的正确用法

例如,我必须这样做是为了获取数据(如果我这样做,这样一来,我得到的数据)

var a = new V7RTLEvtDataSetTableAdapters.tblFileTableAdapter(); 
    a.GetData(); 

而不只是这样做(如果我做这种方式,我什么也没有......如果它的延迟加载我能理解......?)

V7RTLEvtDataSet o = new V7RTLEvtDataSet(); 
var r = o.tblFile.Select(); 

回答

0

大多数被诬蔑,被误解的强类型数据集! 通常情况下,您会使用TableAdapter加载数据并执行更新。 使用设计师,您可以将参数查询添加到表格适配器,以支持您的程序需要的操作。例如select * from customers where customerid = @customerid

称这个FillbyCustomerid

然后你会拉的数据使用TableAdapter所选客户的东西沿着线:

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

我想我越来越了解这些数据集,我希望找到更多的数据集,它与后端访问数据库有一个活跃的连接,以便表自动加载(或至少是第一次需要时),以及通过数据集(通过数据表)进行的更改,可以立即在db中查看。 – nagates

+0

好吧,数据集不能像那样工作。它们本质上是'断开'的 - 你将数据放入它中,处理它,然后提交你的更新。(数据集似乎在SO上的声誉非常糟糕 - 请参阅其他一些回复 - 但也是因为看起来很多垃圾人士实际上并不知道如何使用它们。) – peterG

+0

是的,它们似乎更多但是,在使用旧版Access文件时,它可能是我的最佳选择。 – nagates

1

所有数据集(类型和无类型)是数据库无关的,即任何DataTable可以从Oracle填充,就像从MS-Sql一样简单。 DataSet不知道模式或连接字符串。

您需要一个适配器才能从后备存储读取数据。

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

+0

这似乎只是奇怪的是,它会去通过添加一个连接字符串我设置的努力,我可以在我输入的数据集上使用linq吗?我要一次加载一张表,还是有办法一次性批量填充? – nagates

+0

您只能使用Linq _after_填写数据集。最实用的方法是使用适配器。 –

0

类型化数据集的最佳用法:忽略,从不使用。改为OTM。使用LINQ。数据集 - 类型化和非类型化 - 在.NET 1.0中很糟糕,因为即使MS已经实现了替代方案。 10年内不使用一次,不会使用一次。

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

使用EntityFramework或其中一种替代方法。

+0

我使用旧的Access Db,所以我的选项有限。 – nagates

+0

但是如果你有他们,我愿意接受替代品吗? – nagates

+0

@NateGates不确定。我不处理访问10年。废话不是我曾经处理的。抱歉,这是访问权限。自从SQL CE以来,几乎没有任何访问不只是过时的情况。不知道 - 你可以尝试NHibernate。 – TomTom