2) 数据库端的任何改动都不会自动update到强类型的DataSet. 这个功能可能会在以后的版本中得到解决,在ORCAS中,强类型DataSet和LINQ仍然都没有实现自动更新schema的功能。既然它不能自动更新schema,我们只能手动删除这个表然后重新添加这个表(手动改字段的属性也可以,但是容易造成错误)。这样的话所有写的query都将会丢失。为了避免这样的情况,我们可以将所有的query写成存储过程,这样即使在表删除的情况下,我们仍然可以轻松再添加一遍。
3) 强类型的DataSet在获取存储过程的返回值(e.g. return 1)方面有点问题。我们不能方便的像函数一样得到 int returnValue = (int) da.CallSP(); 为了得到它的返回值,我们需要实现一个生成的TableAdapter的partial类,然后加上这个自定义的方法:
Code
partial class UsersTableAdapter
{
public object GetReturnValue(int commandIndex)
{
return this.CommandCollection[commandIndex].Parameters[0].Value;
}
}
这个commandIndex的值就是你的方法所在的index,如下示例中index是1(index是从0开始算起):
现在我们便可通过如下代码来得到返回值:
Code
da.CallSP(xx, xx);
int returnValue = int.Parse(da.GetReturnValue(2).ToString());
当然,在ORCAS中,我们也有更好的选择,那就是用LINQ-SQL。它是.NET的一个ORM工具,它可以通过LINQ query自动为你生成SQL脚本,让你更加快速的建立数据访问层,所支持的功能更加的强大。不过在.NET Framework 3.5 SP1中,它将被LINQ-Entity所替代。