項目名稱:Enterprise Solution
技術參數
1 C# ASP.NET Web Forms技術,藉助於ExtAspNet控件,快速開發
2 SQL Server 數據庫。使用LLBL Gen ORM框架進行數據讀寫,可支持任意的數據庫
3 基於LLBL Gen ORM 框架,減少對SQL腳本的依賴,專注於業務邏輯
登錄窗體,顯示需要登錄的數據庫
進入主窗體框架,左邊是功能導航,右邊是功能列表
點擊樹節點,右邊展開對應的功能項,點擊該功能,打開新的選項卡,加載此功能
如果不習慣英語界面,可以點擊快速啓動欄中的設置,選項中文簡體或繁體,界面立即切換成對應的語種
上圖中,選項卡並沒有翻譯成對應的語言,應該在框架數據庫中增加如下翻譯,纔可以顯示正確的語言
exec spAddTranslationText N'Sales Order', null, N'銷售單', N'銷售單'
所有的翻譯項目均以此方式完成。可通過查看錶LanguageTranslation,對翻譯的內容進行變更。
三大基礎功能
1 數據輸入窗體 繼承於此窗體,可以快速實現實體數據的輸入與保存,讀取
2 報表窗體 繼承於此窗體,方便呈現微軟的RDLC客戶端報表
3 自定義查詢 在查詢設計器中設計的查詢,均可以顯示爲ASP.NET Web界面,瀏覽數據記錄並導出爲EXCEL
五大核心組件
1 菜單設計器 實現界面導航靈活,便於定製
2 報表設計器 靈活設計報表及其參數,方便實現多語言,多種參數傳遞,數據源自動綁定
3 查詢設計器 設計查詢,可用於C/S和B/S兩種方式呈現
4 工作流設計器 通過拖拉的方式,滿足經常發生變化的工作流程(消息通知,審批)
5 開發工具 提供足夠數量的輔助工具,以方便開發中的各種需要,開發工具的預覽圖如下所示
這些工具,起源於平時的思考和收藏。比如,Enterprise Solution的數據讀寫代碼是藉助於Code Smith模板代碼,如果需要自動化的傳遞參數到Code Smith模板中,並生成指定的文件,則需要使用上圖中的Smith Builder代碼生成輔助工具。再比如,Solution Converter起源於在Visual Studio不同的版本中切換項目,則以此工具爲方便。此項目源碼來源於CodeProject,在此,我只是把它集成到了Solution Package中。
項目源代碼視圖
Business Logic 業務模型實體
Service 數據讀寫代碼,均由代碼生成器Smith Builder 生成
ExtAspNet 第三方控件庫,在此爲了需要進行了部分擴展(extension)
Enterprise Solution Web應用程序的源代碼,ASP.NET Web Forms結構。Web項目中,所有的文件夾和頁面名稱均小寫,頁面所在的文件夾名稱要與其類型的命名空間相符合。來看一個記事本頁面的後臺源代碼
[Function("AIITRL", "~/module/note.aspx")]
public partial class note : EntryPageBase
{
protected override void PageLoadEvent(object sender, EventArgs e)
{
if (!IsPostBack)
TransactionType = "BlotterEntity";
base.PageLoadEvent(sender, e);
}
public override EntityBase2 LoadEntity(string customerNo)
{
IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();
BlotterEntity customer = manager.GetBlotter(Convert.ToInt16(customerNo));
return customer;
}
public override void DeleteEntity(EntityBase2 entity)
{
BlotterEntity user = (BlotterEntity)entity;
IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();
manager.DeleteBlotter(user);
}
public override void SaveEntity(EntityBase2 entity)
{
BlotterEntity user = (BlotterEntity)entity;
IBlotterManager manager = ClientProxyFactory.CreateProxyInstance<IBlotterManager>();
manager.SaveBlotter(user);
}
}
這就是基本的數據讀寫的所有代碼,包含讀取,刪除,保存,均以override的方式存在,由框架類調用。
記事本功能界面如上圖所示,EntryPageBase類型大大簡化了數據輸入窗體的代碼量,專注於邏輯。