随笔 - 19, 文章 - 2, 评论 - 258, 引用 - 3
数据加载中……

使用objectdatasource结合数据绑定控件进行简单三层架构的开发 [绝版]


http://www.cnblogs.com/mFrog/archive/2008/04/18/1160521.html
使用objectdatasource结合数据绑定控件进行简单三层架构的开发
贴后感,因为我上一次没有把 NicPetShop 的这种特性显示出来,NicPetShop 对这 ObjectDataSouce 支持得很好。


对于B/S架构的三层架构的开发,可能很多的人都已经了解的是比较清楚的。哪么我在这里用的是最简单的三层架构。UI + BLL + DAL + Model.

(图就略了)

引用原文:
从 05 出来以后由于功能明显比 03 夸张了很多,所以在开发的时候也就很方便。其中以数据的显示最为明显。通过 sqldatasource 可以几乎一行代码都不需要写,就能在GridView中显示出来数据,并且进行增删查改的操作,但是我个人总感觉这样做是有问题的。因为使用 sqldatasource,就明显的破坏了 3 层架构的基本改变。哪么微软在05当中,很重点的推出了 objectdatasource 这个东西,就是专门用来结合三层架构开发的一个数据源绑定控件。 在层次之间传递的也是object,这样相对来说就比较好一些。

页面代码为:
add.aspx
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="ObjectDataSource1" 
DefaultMode
="Insert">
    
<Fields>
        
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        
<asp:TemplateField HeaderText="Remark" SortExpression="Remark">
            
<InsertItemTemplate>
                
<asp:TextBox ID="TextBox1" runat="server" Height="134px" Text='<%# Bind("Remark") %>' TextMode="MultiLine" Width="286px"></asp:TextBox>
            
</InsertItemTemplate>
        
</asp:TemplateField>
        
<asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" SortExpression="Id" />
        
<asp:CommandField ButtonType="Button" ShowInsertButton="True" />
    
</Fields>
</asp:DetailsView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" InsertMethod="Insert"
    SelectMethod
="GetItem" TypeName="Test.BLL.Source">
    
<SelectParameters>
        
<asp:Parameter Name="Id" Type="Int32" />
    
</SelectParameters>
    
<InsertParameters>
        
<asp:Parameter Name="Id" Type="Int32" />
        
<asp:Parameter Name="Name" Type="String" />
        
<asp:Parameter Name="Remark" Type="String" />
    
</InsertParameters>
</asp:ObjectDataSource>

update.aspx
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="ObjectDataSource1" DefaultMode="Edit">
    
<Fields>
        
<asp:TemplateField HeaderText="Id" SortExpression="Id">
            
<EditItemTemplate>
                
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
            
</EditItemTemplate>
        
</asp:TemplateField>
        
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        
<asp:TemplateField HeaderText="remark" SortExpression="remark">
            
<EditItemTemplate>
                
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("remark") %>' Height="109px" TextMode="MultiLine" Width="239px"></asp:TextBox>
            
</EditItemTemplate>
        
</asp:TemplateField>
        
<asp:CommandField ButtonType="Button" ShowEditButton="True" />
    
</Fields>
</asp:DetailsView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    SelectMethod
="GetItem" TypeName="Test.BLL.source" UpdateMethod="Update">
    
<SelectParameters>
        
<asp:QueryStringParameter DefaultValue="0" Name="Id" QueryStringField="id" Type="Int32" />
    
</SelectParameters>
    
<UpdateParameters>
        
<asp:Parameter Name="Id" Type="Int32" />
        
<asp:Parameter Name="Name" Type="String" />
        
<asp:Parameter Name="remark" Type="String" />
    
</UpdateParameters>
</asp:ObjectDataSource>


封装的代码:

DBUtility.csproj

SqlHelper.cs

Code

ConnectionManager.cs
Code


更多请参考 NicPetShop 提供例子的项目结构。。
Tag标签: NicPetShop

posted on 2008-04-21 10:50 nicye 阅读(3150) 评论(10)  编辑 收藏 网摘

评论

#1楼   回复  引用  查看    

http://www.cnblogs.com/Emoticons/yoyocici/223852199.gif" alt="" />真绝了?
2008-04-21 11:08 | 李战      

#2楼   回复  引用  查看    

要是能说说你这样做的优点,以及跟普通的三层设计的区别在哪里,才能知道这样做的价值在哪里。我没有看出来~~~呵呵
2008-04-21 11:14 | 钢钢      

#3楼[楼主]   回复  引用  查看    

@李战
你很活跃,呵呵
真的很绝,NicPetShop 对 ObjectDataSource 和 WebControls UI 支持很好,页面上只需要绑定的代码即可(代码很少),支持设计时设计绑定
对于此特性,我只使用在后台程序中,前台用不上。因为一定要开启 enableViewState,这是因为 WebControls UI 需要(如 DetailsView),后台开不开启无所谓
2008-04-21 11:16 | nicye      

#4楼[楼主]   回复  引用  查看    

@钢钢
PetShop 有什么优点?NicPetShop 从性能、实体关系、BLL、命名规范方面做了扩展

@all
由于我个人很讨厌 ViewState,所以我之前一直没有强调 NicPetShop 对 DetailsView 做添加/修改功能很得意。
2008-04-21 11:19 | nicye      

#5楼[楼主]   回复  引用  查看    

@钢钢
优点请参考:http://www.cnblogs.com/kellynic/archive/2008/03/25/1121753.html" target="_new">http://www.cnblogs.com/kellynic/archive/2008/03/25/1121753.html
这里已经写有大部分优点,用过才知道感受
比任何一套多层开模式都简单,而功能并不简单
2008-04-21 11:21 | nicye      

#6楼   回复  引用  查看    

@nicye
PetShop 的优点就在于用了三层结构,这个在今天看来已经没有什么了不起的。而PetShop 了不起的地方是它为初学三层结构的学员提供了一个通俗的Demo,让大家更容易理解三层而已。
我看了你要我参考的东东,要是一年前我看到,或许会对我有更多帮助。。。
呵呵,还是很感谢你的热心。
2008-04-21 11:58 | 钢钢      

#7楼   回复  引用  查看    

很不错啊,学习一下
2008-04-21 12:13 | dudubeibei      

#8楼[楼主]   回复  引用  查看    

@钢钢
哈哈,我说过用过才会有体会
NicPetShop 的项目结构和 PetShop 基本相同,但内核完全不同
它将数据库的关系生成到自己的项目中,这是它最大的优点(一些PETSHOP生成工具没有这个功能)
<数据库的关系>

有兴趣看看把我用 NicPetShop 的视频开发过程
2008-04-21 12:16 | nicye      

#9楼   回复  引用  查看    

ObjectDataSouce这个东西我不喜欢,编译器无法检查到错误~~
没有智能提示,很容易出错~~~

现在比较专注在用ASP.NET MVC + LingQ + Castle来做框架

ASP.NET MVC 真是个不错的东西
2008-04-21 14:56 | 小No      



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1163500




相关文章:

相关链接: