觉得很多人在写关于asp.net2.0的东东,很少有人写关于ado.net2.0的新特性。查找了一下msdn,给大家介绍几点好了。(如果需要察看所有ado.net2.0的新特性,请查看
http://msdn2.microsoft.com/en-us/library/ex6y04yf.aspx)
server enumeration
用来枚举活动状态的sql server实例,版本需要在sql2000及更新版本。使用的是sqldatasourceenumerator类
可以参考以下示例代码:
using system.data.sql;
class program
{
static void main()
{
// retrieve the enumerator instance and then the data.
sqldatasourceenumerator instance =
sqldatasourceenumerator.instance;
system.data.datatable table = instance.getdatasources();
// display the contents of the table.
displaydata(table);
console.writeline("press any key to continue.");
console.readkey();
}
private static void displaydata(system.data.datatable table)
{
foreach (system.data.datarow row in table.rows)
{
foreach (system.data.datacolumn col in table.columns)
{
console.writeline("{0} = {1}", col.columnname, row[col]);
}
console.writeline("============================");
}
}
}
dataset enhancements
新的datatablereader类可以说是一个dataset或者datatable,的一个或者多个的read-only, forward-only的结果集。需要说明的是,datatable返回的datatablereader不包含被标记为deleted的行。
示例:
private static void testcreatedatareader(datatable dt)
{
// given a datatable, retrieve a datatablereader
// allowing access to all the tables' data:
using (datatablereader reader = dt.createdatareader())
{
do
{
if (!reader.hasrows)
{
console.writeline("empty datatablereader");
}
else
{
printcolumns(reader);
}
console.writeline("========================");
} while (reader.nextresult());
}
}
private static datatable getcustomers()
{
// create sample customers table, in order
// to demonstrate the behavior of the datatablereader.
datatable table = new datatable();
// create two columns, id and name.
datacolumn idcolumn = table.columns.add("id", typeof(int));
table.columns.add("name", typeof(string));
// set the id column as the primary key column.
table.primarykey = new datacolumn[] { idcolumn };
table.rows.add(new object[] { 1, "mary" });
table.rows.add(new object[] { 2, "andy" });
table.rows.add(new object[] { 3, "peter" });
table.rows.add(new object[] { 4, "russ" });
return table;
}
private static void printcolumns(datatablereader reader)
{
// loop through all the rows in the datatablereader
while (reader.read())
{
for (int i = 0; i < reader.fieldcount; i++)
{
console.write(reader[i] + " ");
}
console.writeline();
}
}
binary serialization for the dataset
关于这点linkcd已经写过一篇性能测试的文章:.net 2.0 下data container性能比较: binary serialize dataset vs custom classes
datatable as a stand-alone object
很多以前dataset的方法,现在可以用datatable直接使用了
create a datatable from a dataview
现在可以从dataview返回一个datatable了,两者基本是一样的,当然你也可以有选择性的返回,比如说返回distinct rows
new datatable loading capabilities
datatables跟datasets现在提供一个新的load方法,可以直接把datareader中的数据流载入到datatable中,当然你也可以对如何load做一些选择。
以上是ado.net2.0的一些特性,你使用.net2.0进行开发,就可以使用这些特性。
更激动人心的在于ado.net3.0的一些特性.
有文章介绍了一些ado.net3.0 augut ctp的一些特性:
the ado.net entity framework
the entity data model (edm),实体数据模型,开发者可以以更高的抽象层次来设计数据模型
一个很牛的client-views/mapping引擎,用来映射(map to and form)存储结构(store schemas )
完全支持使用entity sql跟linq( 这东西现在出现频率还挺高的哦,也挺好玩的一个东东)查询edm schemas
.....
linq(august ctp):
linq to entities: 使用linq查询edm schemas
linq to dataset: 对一个或者多个datatable进行linq查询
都是很期待的技术,enjoy it!:)
新闻热点
疑难解答
图片精选