使用c#和Visual Studio设计时数据集访问数据库

时间:2012-09-28 14:44:50

标签: c# dataset visual-studio-2012 strongly-typed-dataset

我已经看到很多使用C#访问数据库的方法我不知道哪一个对于简单的读/写/操作数据是“最好的”。我曾经只使用通用的DataSet / DataTable对象,但我正在尝试使用更多类型安全的结构。我首先在visual studio中添加了一个数据集(xsd)并连接到SQL服务器后端。

我正在尝试查询表中的列以查找给定字符串,但该列不是主键(因此我不能使用.Find())。我该怎么做呢?我需要使用LINQ还是可以使用扩展方法/ lambda表达式?

在更基础的层面上,当使用设计时数据集时,我是否需要使用表适配器来填充我使用的数据集中的每个表,或者我只是实例化数据集?文档对我来说有点混乱。

1 个答案:

答案 0 :(得分:3)

您可以使用Linq-To-DataSet来查询DataSet,这是最强大的方式(不是在效率方面,而是在可读性和可维护性方面)。

了解详情:Querying Typed DataSets

您可以选择在VS设计器上创建TableAdapterDataTable。如果添加TableAdapter VS也会创建相应的DataTable。如果您只添加DataTable,则必须提供自己的方式来填充它。 TableAdapters类似于ADO.NET中的DataAdapter

因此,如果您创建了一个名为DataSet1的DataSet并添加了一个选择名为tabData的表的TableAdapter,Visual Studio将自动创建一个名为tabDataDataTable的DataTable和一个{{1}在命名空间TableAdapter中命名为tabDataTableAdapter

所以你可以用这种方式填写这张表:

DataSet1TableAdapters

假设该表包含列var dataSet = new DataSet1(); var da = new DataSet1TableAdapters.tabDataTableAdapter(); da.Fill(dataSet.tabData); Name,并且您希望找到名称以Age开头并且年龄为>的所有行。 30,你可以使用LINQ的"Jon"

Where

请注意,您可以使用LINQ-To-DataSet类型安全(var jons = dataSet.tabData .Where(r => r.Name.StartsWith("Jon") && r.Age > 30); foreach (DataSet1.tabDataRow row in jons) { Console.WriteLine("{0} is {1} years old", row.Name, row.Age); } 是一个字符串,r.Name是一个int。)