ASP.NET Web開發架構之七 開發流程與模式

來源:互聯網
上載者:User
文章目錄
  • 1 設計資料庫表 Table Design
  • 2 實體映射 ORM Mapping
  • 3 資料讀寫介面與實現的產生 Interface and Service Implementation
  • 4  ASP.NET 頁面配置與編程 ASP.NET Page Layout Design and Coding

經過前面六篇文章的講解,基本的理論已經介紹完畢,這一篇進行實戰練習,討論如何從頭開始開發一個完整的ASP.NET 頁面,並進行資料讀寫,商務邏輯設定。

1 設計資料庫表 Table Design

公司表存放系統中的公司執行個體,表示進行業務往來的實體,它的表結構如下指令碼所示

CREATE TABLE [dbo].[Company](    [CompID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,    [ParentCompID] [numeric](18, 0) NULL,    [CompTypeID] [numeric](18, 0) NOT NULL,    [CompNO] [varchar](20) NOT NULL,    [CompName] [varchar](50) NOT NULL,    [Corporation] [varchar](20) NULL,    [CorpMobile] [varchar](20) NULL,    [CorpTel] [varchar](20) NULL,    [Address] [varchar](100) NULL,    [Tel1] [varchar](20) NULL,    [Tel2] [varchar](20) NULL,    [Fax] [varchar](20) NULL, CONSTRAINT [PK_TCOMPANY] PRIMARY KEY CLUSTERED (    [CompID] ASC)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY]

2 實體映射 ORM Mapping

開啟LLBL Gen,串連到資料庫並更新實體,把上面的Company表映射到實體CompanyEntity。設計欄位名時,最好以簡明,可讀性好的詞命名,這樣可以增強映射到實體上的屬性的可讀性。

如果表與表之前有關聯,LLBL Gen會自動產生表之間的關聯。

 

3 資料讀寫介面與實現的產生 Interface and Service Implementation

這一步驟也是自動化的,不需要額外的腦力活動。以Code Smith開啟模板Interface.cst和Manager.cst,選擇表對象為Company,產生代碼,把這此代碼拷貝到Visual Studio的項目中即可。

請在項目的Source\Maintenance\Template路徑下擷取上面所提到的兩個模板,用以產生資料讀寫介面與實現代碼。

 

4  ASP.NET 頁面配置與編程 ASP.NET Page Layout Design and Coding

向Web項目中添加一個ASP.NET 頁面,命名為company.aspx。我推薦以小寫命名Web項目的檔案夾,檔案名稱和頁面類型名稱。為了讓它具備EntryPageBase的功能,我在頁面的首部,添加一個Toolbar,它用來承載工具箱中的系列工具,以進行資料的前後瀏覽,增加刪除工作。其它的地方,以FormRow的方式安排布局。

FormRow會為它的Items平均分配寬度,所以每行FormRow最好放置相同的Items以讓介面布局看起來美觀整齊。

ASP.NET的後台代碼看起來是這樣的,這裡羅列所有的代碼,供您參考。

[Function("AIITHD", "~/module/company.aspx")]public partial class company : EntryPageBase{             protected override void PageLoadEvent(object sender, EventArgs e)        {            if (!IsPostBack)            {                TransactionType = EntityType.CompanyEntity;                ddlCompanyGroup.InitializeValueListFromEnum(9);            }            base.PageLoadEvent(sender, e);        }        public override EntityBase2 LoadEntity(string refNo)        {            ICompanyManager manager = ClientProxyFactory.CreateProxyInstance<ICompanyManager>();            CompanyEntity customer = manager.GetCompany(Convert.ToInt16(refNo));            return customer;        }        public override void DeleteEntity(EntityBase2 entity)        {            CompanyEntity user = (CompanyEntity)entity;            ICompanyManager manager = ClientProxyFactory.CreateProxyInstance<ICompanyManager>();            manager.DeleteCompany(user);        }        public override void SaveEntity(EntityBase2 entity)        {            CompanyEntity user = (CompanyEntity)entity;            ICompanyManager manager = ClientProxyFactory.CreateProxyInstance<ICompanyManager>();            manager.SaveCompany(user);        }    }
 

首先給頁面分配一個功能編碼,比如此頁面的AIITHD,然後設定的Url屬性,這兩個同時附加到頁面的特性中去。

[Function("AIITHD", "~/module/company.aspx")]

這裡有些不足之處,到目前為止我還沒有找到根據ASP.NET頁面類型,得到它的分頁檔。因為ASP.NET的請求處理是以ASPX檔案在瀏覽器中敲入後,發送到伺服器來執行的。所以,如果能找到這個辦法,則這裡的Url設定可以省略。

其次,指定TransactionType = EntityType.CompanyEntity,這用來指定當前頁面的實體為CompanyEntity,並對它進行讀寫操作,與頁面相關的資料繫結,回寫到資料庫中,均需要此屬性。緊接著的是三個模板方法,LoadEntity用於載入公司實體,DeleteEntity用於刪除,SaveEntity用於儲存修改後的實體。這三個方法均是override,它被頁面基類調用。

最後執行一下功能編碼為AIITHD的功能,來看看效果是怎樣的。在頁面的右上方輸入功能編碼,點擊Go按鈕。

關於資料繫結,所有的秘密藏在分頁檔中,我以Company No為例子,請看它的分頁檔

 <ext:TextBox ID="tbxName" runat="server" Label="Company No" DataBindingString="CompanyEntity:CompNo">                    </ext:TextBox>

它的DataBindingString屬性,在讀取資料時,將實體屬性綁定到此控制項,在儲存時,又讀取這個值,回寫到實體中並儲存到資料庫中,這樣可以減少大量重複的代碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.