关于ObjectDataSource的一点笔记
首先比较下 SqlDataSource和ObjectDataSource控件:
“ASP.NET2.0提供了SqlDataSource数据源控件,后者支持用于指定连接字符串、SQL 语句或存储过程的属性,用以查询或修改数据库。但是,SqlDataSource 控件存在一个问题:该控件的缺点在于它迫使您将用户界面层与业务逻辑层混合在一起。然而随着应用程序规模的扩大,您会越来越感觉到混合多个层的做法是不可取的。 生成严格意义上的多层 Web 应用程序时,您应该具有清晰的用户界面层、业务逻辑层和数据访问层。仅仅由于 SqlDataSource 控件的强制而在用户界面层引用 SQL 语句或存储过程是不可取的。”(引用一段专业评述..)
SqlDataSource和ObjectDataSource的选择,前者适合大多数小规模的个人或业余站点,而对于较大规模的企业级应用程序,在应用程序的呈现页中直接存储 SQL 语句可能很快就会变得无法维护。这些应用程序通常需要用中间层数据访问层或业务组件构成的封装性更好的数据模型。所以使用 ObjectDataSource 控件是一种较为明智和通用的做法。在我之前写的博客系统里就明显感觉到这个问题,大量反复的业务处理,和页面混合,测试修改非常麻烦,那时候的感觉就是:”数据映射是个好东西,在今后的开发中要学习使用”.不过这个解决方案还是比较重量级的,代表框架首选就是 NHibernate了.只是初探了一些映射到实体类的使用,还没有深入了解.
ObjectDataSource公开一个 TypeName 属性(而不是 ConnectionString 属性),即它所要实例化的类名。类似于 SqlDataSource 的命令属性,只不过它绑定的是一个对象.
提供的数据处理业务的引用( 绑定到数据访问层)如下
<asp:ObjectDataSource TypeName="MyDataLayer" runat="server"
SelectMethod="GetRecords"
UpdateMethod="UpdateRecord"
DeleteMethod="DeleteRecord"
InsertMethod="InsertRecord"
/>
GetRecords等几个方法为预先封装好的业务类所提供的4个处理方法.
之前学习.net的基本服务器控件的时候,基本上是闪电式的略独,不过对这个控件还是记忆挺深的,因为比较特别,然后..那时也基本上不知有什么使用…于是所做的尝试都是用通用的数据控件来做的,一时还以为.net在数据这块的通用开发上没有什么特别的东西,可能只有在企业应用里才会涉及其他复杂的应用.现在看来是由于个人阅览面的局限了..呵.不过在实际开发中的体验也还是感觉的到,肯定会有相应的解决方案的,不然就不是微软了.哈,这里就不贴具体的实例了,网上搜下会有很多可用资源了.这里算做个笔记,记录下自己的进度.