[Visual Studio & Xamarin] 开发架构(二)-Repository与Entity Framework

開發架構是我覺得很重要的一個環節,也聽過許多前輩各種不一樣的開發架構概念。每種想法概念都個有長處,很難比較出那種是一定最好的。

所以我認為就是選擇最適合你,用起來順手,專案能順利的完成與驗收就是一個屬於你的最佳解。接著來延伸上一個章節關於IOC反轉控制研究的部分,要討論的是軟體架構設計中的系統邊界物件(Repository)與Entity Framework的結構。

 

在iOS與Android的開發架構都是依循著MVC的架構,不過在細節與實作上方式都不一樣。在微軟的MVC網頁中,我個人覺得有些部分是滿不錯

,像是習慣取代配置的檔案分層方式。所以我把一些結構概念加進了iOS與Android,幫助我在開發時的專案結構規劃,

這邊就分享一下我的作法給大家參考。下圖是我用在iOS還有Android開發上的架構,不論是使用Xamarin或者是Xcode的原生開發,都可以

使用上這樣的結構。不過在開始講下列架構前,在這一篇我還是先用一個Entity Framework來簡單表達系統邊界的開發方法,後面的章節再進入

到Android或者是iOS上。


前置準備,建立一個SQL Server資料庫。

我在SQL Server裡面建立了一個Test資料庫,在Test資料庫裏面建立了一個Table1資料表

裡面的資料欄為如下:


1. 新增一個主控台應用程式,命名為Repository_Entity。

2.建立一個Entity Framework的資料模型的資料來源。

在專案中選擇[加入新項目],然後建立一個ADO.NET 實體資料模型。


2.1在選擇模型內容,選擇從資料庫產生。


2.2然後選擇要連接的資料庫,選擇在我的SQL Server環境中的建立的Test DB。


2.3模型物件選擇Table1資料表。


3.建立類別圖表

加入一個類別圖表的新項目。


3.1建立DataAccess Object interface 邊界物件,並且宣告IQueryable<Table1> GetData();方法


1 namespace Repository_Entity
2 {
3     public interface DAORepository
4     {
5         IQueryable GetData();
6     }
7 }
3.2建立DAO物件並且實作DAORepository介面


01 namespace Repository_Entity
02 {
03     public class DAO : DAORepository
04     {
05         //建立TestDB的Entity物件
06         TestEntities TestDB = new TestEntities();
07  
08         //實作GetData()方法
09         public IQueryable GetData()
10         {
11             var Result = from x in TestDB.Table1
12                          select x;
13             return Result;
14         }
15     }
16 }
3.3建立Factory物件,宣告GetDAO()靜態方法讓它回傳DAORepository型別的物件


01 namespace Repository_Entity
02 {
03     public class Factory
04     {
05         public static DAORepository GetDAO()
06         {
07             return new DAO();
08         }
09     }
10 }
3.4到主控台應用程式去呼叫Factory物件來取得DAO物件,然後操作對資料庫做查詢的操作

01 namespace Repository_Entity
02 {
03     class Program
04     {
05         static void Main(string[] args)
06         {
07             //呼叫Factory.GetDAO();方法來傳入DAO物件
08             DAORepository daoobj = Factory.GetDAO();
09  
10             //取得GetData()方法回傳的IQueryable
11             var test = daoobj.GetData();
12  
13             //使用Foreach來列出IQueryable 物件內容
14             foreach (var r in test)
15             {
16                 Console.WriteLine(r.test01 + "\t" + r.test02);
17             }
18             Console.ReadLine();
19         }
20     }
21 }
4.編譯這個程式,可以看見主控台列印出資料庫裏面的資料了。


以上完成了用Entity Framework與Repository來實作系統邊界的概念,這個概念建立起來後,

後續就可以開始把這個結構概念導入進行動裝置的開發上。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值