三层架构中,表示层用FormView +ObjectDataSource 添加数据,然后取返回值的实现方法。
总结:之前没有使用三层时,没有实体层,ObjectDataSource可以直接跟存储过程连接,还可以在
ASPX页面使用下面代码
<InsertParameters>
<asp:Parameter Name="Title" Type="String" />
<asp:Parameter Direction="Output" Name="Return" Type="Int32" />
</InsertParameters>
接着在ASPX.CS页面
用 protected void ObjectDataSource1_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
{
// e.Command.Parameters[1].Value.ToString()就是返回值
}
取得。
如今多了实体层,实体对应了数据库表结构,无法再用上面的方法或者返回值,只能用e.ReturnValue。
这样问题可以解决,但是还有一些疑问:
看了一些三层的例子,按她们普遍的做法,这里BLL层int Add(string Title)函数应该是int Add(NewData newData),就说对象在ASPX.CS里面构造,适用于用很多textbox + 一个button做的页面,这样很容易赋值,也很容易取返回值,但是用FormView +ObjectDataSource就实现不了,非得给ObjectDataSource的Insert事件对应正确的函数,所以我能想到的就是这样做。那这样子还是正确的三层吗?看了很多三层的例子,大家理解都不一样,不过没有见过对数据进行CRUD操作用ObjectDataSource去实现的,都是在ASPX.CS进行大量的编码的,感觉就是以前.net1.1的样子,代码多了,但是调试也方便了。
PS:想把刚刚学到的东西给写出来,没想到其实很难的,希望对大家有一点帮助吧。