iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
3
Modern Web

跨平台開發利器- ASP.NET Core 系列 第 8

(Day 8) 從瞭解需求到資料庫規劃的傳統軟體專案開發方式有什麼不好的地方嗎?

『ASP.NET Core MVC,主任知道這個新技術嗎?』小魏上過第一次的課回來就在炫。
『知道,微軟最近把ASP.NET的技術推進到跨平台的主要技術,所以你們老師是教這個。』
『嗯,他說本來是ASP.NET MVC,但現在版本演進,變成是ASP.NET Core MVC。』
『喔,你是去上ASP.NET Core的課,我還以為是ASP.NET MVC。』
『MVC的課滿人了,所以跟經理爭取了一下,請公假去上白天的.NET Core課程,這個星期上了第一階段的課,下個星期要上第二階段的課,總共費用將近三萬,又省了幾千元,謝謝主任的金卡。』小魏有些得意表情。
『好,那今天我們先來談談人資部要的薪資計算系統怎麼進行。』
『批出來了嗎?要進行了?』
『是的,前天總經理找我們去開會就決定了。這個系統做好上線,我們就獨立成資訊室的單位,還要再補兩個新人。』我順便抛一個震憾彈。
『哦?之前有向葉經理建議,資訊獨立出來,不要掛在人資部下,這樣大家都好辦事。沒想到是主任促成了這件事。』小魏又一付酸樣,大概沒坐上寶位吧。
『先把系統做好再說吧。系統沒弄好,一場空。』我把我的電腦開機,一邊說。
『是啊。』

『好吧,你坐我我這邊,我把我這兩天構思的系統架構跟你討論一下。功能架構圖是這個樣子。』我調出一張圖給小魏看。
https://ithelp.ithome.com.tw/upload/images/20181013/20017649YF9RcRY88t.png
『嗯,看起比較完整,比做的Excel檔案更能符合葉經理的想法。』小魏大致看了一下,發表他的看法。
『接下來還有畫面設計,和資料庫設計。對了,你會用SQL Server吧?』
『有學了些,之前到X逸上過課,沒有實作的經驗。』
『沒關係,SQL Server很簡單的,我打算在SQL Server裏建好資料庫再給系統用。』
『我上課時,講師提到Code First的做法,聽不太懂。似乎主任要用Database first的作法?』
『對,我還是比較喜歡先用資料庫正規化的方法把資料庫結構建好,以後也是用SQL Server的SSMS來進行維護修改Schema的工作。』
『等一下,如果資料庫裏的Table增加或修改了欄位,比方說資料型態改變了,程式裏的Model怎麼辦?也要手動修改嗎?』小魏反應很快的找出問題點。
『不會的,有Entity Framework可以輔助我們在ASP.NET Core的環境下持Model與資料庫元件間的一致性,只是要會在Visual Studio中執行Colsole指令,驅動Entity Framework更新Model的結構,與資料庫一致。』
『嗯,講師有講到點指令,也有實作,只是看不懂。』小魏說著還搖搖碩,似乎氣餒的樣子。
『你不是下星期要去上第二階段的課,順便再請講師教一遍看看。』
『Database First和Model First差別,只在於由那邊主動管理應用桯式的資料庫結構,如果是Model First,就是在ASP.NET Core的環境下編寫Model類別,然後呼叫Entity Framework的指令連到SQL Server把資料庫建起來。兩種方法都一樣,只是資料庫同步的方向不同而己。』
『講師說,Model First就是Code First,用Code First就能在ASP.NET Core的環境下直接維護資料庫,不同再用SSMS來管理資料庫。』小魏又開始抬摃起來。
『都一樣的,你再想想,最終是不是需要兩邊的物件一致,系統才能執行不會有問題?不是有講嗎?管他黑貓白貓,能抓老鼠的就是好貓。管他Database First Model First Code First,能讓我們能儘快完成系統開發的,就是好工具。』
『嗯,可以這麼說。那這樣,我是不是可以選用我比較合意的方式來進行開發?』
『當然可以,沒問題的。只是,我們分工一下,系統規劃與資料庫建立由我來執行,你負責程式編寫的部份,可以嗎?』
『好的,看主任怎麼安排,我全力配合。只是,該不會全都我編碼吧?』
『不會,我也會負責一部份。基本上,我想基本資料維護的部份由你來完成,我來完成計算的部份。反正下星期你還要上課,我先把資料庫建好,等你回來就可以動工了。』
『薪資計算的部份,我會用T-SQL寫成Stored Proedure,不寫在ASP.NET Core程式內。』
『哦,主任為什麼這樣規劃?』
『一方面,基本上我有一個原則,能在資料庫處理的事,就讓資料庫來處理。二方面,我不太會用Controller來做計算。』我對小魏哈哈乾笑兩聲。『所以用Stored Procedure來寫,然後在月份薪資計算功能裏,呼叫這個STored Procedure就能完成薪資計算了,方便又省事。』
『嗯,主任有把握完成就行。』
『一起努力吧!今天就談到這裏,我再繼續把資料庫規劃好,你繼續完成課程,下下個星期你回來時,就正好開始閇發基本資料維護功能。』
『好,我先去巡一下各單位,看看有沒有電腦方面的問題。』
『嗯,有你空時再溫習一下SQL Server的SSMS操作,尤其SQL指令的應用要熟練一些,講師有講到怎麼利用資料庫建Model嗎?』我問小魏。
『有,只是聽不太懂,看講師操作,東點一下,西點一下,幾下就弄完了,自己來實作時,根本找不到該點那些地方。』小魏也乾笑兩聲。
『嗯,沒關係,還有時間學習。』
『我先去會計室看一下電腦,有一台不能印表。』
『好,就先這樣子了。』
小魏離開後我抽出幾張A4空白紙,開始畫下資料庫結構:
https://ithelp.ithome.com.tw/upload/images/20181014/20017649QRmHLswjbJ.png
一下子完成三個表,看看時間也差不多該去各部門串串門子了。


上一篇
(Day 7) ASP.NET Core專案架構 下篇
下一篇
(Day 9) 如何進行Database First式開發?
系列文
跨平台開發利器- ASP.NET Core 30

1 則留言

0
海綿寶寶
iT邦大神 1 級 ‧ 2018-10-13 22:52:45

資料型態 money ?
別說 smallmoney
用個 decimal(5,0) 就可以打發我了
/images/emoticon/emoticon44.gif

賽門 iT邦超人 1 級 ‧ 2018-10-14 14:01:10 檢舉

總統令。跟你的老闆說啊!

我要留言

立即登入留言