1. 程式人生 > >EF6 在原有數據庫中使用 CodeFirst 總復習(五、生成發帖頁面)

EF6 在原有數據庫中使用 CodeFirst 總復習(五、生成發帖頁面)

數據 ctrl 記得 自動 rst 默認值 string 頁面 ont

有點與在原有數據庫中使用 CodeFirst 遠了,不過是總復習嗎,總得全面點。

一、在用戶表(Users)中插入兩個用戶

技術分享圖片

二、生成發帖界面

MVC生成的界面很多,也沒使用Ajax,實際開發中很少會使用,這裏只是為了演示。

但無論用什麽生成,特性、實體對象等都是要用到的。

技術分享圖片

生成之前要編譯一下。

技術分享圖片

技術分享圖片

三、先試試看能不能運行

技術分享圖片

空空如也

技術分享圖片

應該顯示用戶名,顯示成登陸名了(其實預想的是不在新增和修改時顯示,未考慮到列表),刪除標記怎麽也顯示出來了,還有內容,能顯示的下嗎。。。

四、列顯示問題

讓列表顯示用戶,正好特性設錯了,嘿嘿。就讓它顯示吧,一會再到新增和修改裏刪除相應內容。

技術分享圖片

運行後頁面如下:

技術分享圖片

登錄名還未改,並且應放在後面。

五、將登錄名改為用戶,並放到後面

未找到自動生成時排序順序的特性,只能手動去拖代碼了,郁悶吧?!

技術分享圖片

列別顯示為:

技術分享圖片

系統使用登陸名未使用顯示名可能是因為登陸名在前面

技術分享圖片

技術分享圖片

六、血的教訓

自動生成列表框使用包含ID和包含Name的列,如果有多個Name,則使用前面的,為了記住它,我把用戶名拖到了前面:

技術分享圖片

七、重新遷移,遷移後數據庫中的字段順序卻不會改,嘿嘿,我用力的把它也拖到了前面(生成列表時並不以數據庫中的順尋為準)

技術分享圖片

八、刪除Post控制器和Views裏的Post文件夾,重新生成並運行

技術分享圖片

九、你就喜歡在前面?我非讓你到後面去,只能安裝上面的再拖一次代碼了

技術分享圖片

列別顯示為:

技術分享圖片

順序真是個大問題,好在我們實際開發時一般不用它生成,我們自己生成,就可以想辦法用特性等方法解決了。

拖代碼起始也很簡單,選中th或td,拖到後面,按Ctrl + E + D,自動排版一下就可以了,我一般都是習慣按Ctrl + E + D + S

十、看看我們的新增界面

技術分享圖片

順序也能將就了,內容不是多行文本,不應該顯示用戶,用戶是我們根據登陸的當前用戶自己添加進去的。

技術分享圖片

改為了多行文本,順便去掉了ntext

沒查ntext和max那個更長,只是max更大一點,你喜歡長的還是大的?重新遷移一下自己去數據庫看吧。

十一、去掉用戶,在新增時加上

在Creat.cshtml和Edit.cshtml中刪除下面代碼

<div class="form-group">
@Html.LabelFor(model => model.UserID, "UserID", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("UserID", String.Empty)
@Html.ValidationMessageFor(model => model.UserID)
</div>
</div>

修改控制器

技術分享圖片

運行看看:

技術分享圖片

怎麽有男性話題?不是軟刪除了嗎?

這個軟刪除真是很麻煩,先去把這個改掉吧,顯得嚴謹一些,當然我們也只改此一處 :)

技術分享圖片

像復制粘貼不,你喜歡B還是喜歡U?

編譯運行看看

技術分享圖片

點確定啊,這樣就差不多了

技術分享圖片

十二、還記得我們的Post實體對象嗎,和Blog不一樣的那個地方

技術分享圖片

實踐也證明了,bool 系統會自動添加默認值 false的,其它的呢?明天查查資料吧

EF6 在原有數據庫中使用 CodeFirst 總復習(五、生成發帖頁面)