<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                在本節中,您將使用Entity Framework Code First來實現模型類上的操作。從而使得這些操作和變更,可以應用到數據庫中。 默認情況下,就像您在之前的教程中所作的那樣,使用 Entity Framework Code First自動創建一個數據庫,Code First為數據庫所添加的表,將幫助您跟蹤數據庫是否和從它生成的模型類是同步的。如果他們不是同步的,Entity Framework將拋出一個錯誤。這非常方便的在開發時就可以發現錯誤,否則您可能會在運行時才發現這個問題。 (由一個晦澀的錯誤信息,才發現這個問題。) # 為對象模型的變更設置 Code First Migrations 如果您使用的是 Visual Studio 2012,從解決方案資源管理器中雙擊*Movies.mdf*,打開數據庫工具。Visual Studio Express for Web將顯示數據庫資源管理器,Visual Studio 2012 將顯示服務器資源管理器。如果您使用的是Visual Studio 2010,請使用 SQL Server對象資源管理器。 在數據庫工具 (數據庫資源管理器、 服務器資源管理器或 SQL Server對象資源管理器),右鍵單擊`MovieDBContext`,并選擇**刪除**以刪除電影數據庫。 [![clip_image001](https://box.kancloud.cn/2016-08-08_57a81c68e71f2.png "clip_image001") ](http://images.cnitblog.com/blog/139239/201302/26103507-f4a4022445024feb9f665063eab77056.png) 返回到解決方案資源管理器。在Movies.mdf文件上右鍵單擊,并選擇**刪除**以刪除電影數據庫。 [![clip_image002](https://box.kancloud.cn/2016-08-08_57a81c6906ad2.png "clip_image002") ](http://images.cnitblog.com/blog/139239/201302/26103509-105c719a0df44901973f03fffa49426d.png) Build應用程序,以確保沒有任何編譯錯誤。 從**工具**菜單上,單擊**庫包管理器**,然后點擊**程序包管理器控制臺**. [![clip_image003](https://box.kancloud.cn/2016-08-08_57a81c69235fa.png "clip_image003") ](http://images.cnitblog.com/blog/139239/201302/26103511-1cc4a1f86bb84645a363a6fa7c54dda1.png) 在 **軟件包管理器控制臺 **窗口中` `PM> 提示符下輸入"Enable-Migrations –ContextTypeName MvcMovie.Models.MovieDBContext"。 [![clip_image004](https://box.kancloud.cn/2016-08-08_57a81c6940440.png "clip_image004") ](http://images.cnitblog.com/blog/139239/201302/26103514-780e6a5bb9e34d13812c59c7608dccad.png) (如上所示)**Enable-Migrations**命令會在Migrations文件夾中創建一個Configuration.cs文件。 [![clip_image005](https://box.kancloud.cn/2016-08-08_57a81c69579e9.png "clip_image005") ](http://images.cnitblog.com/blog/139239/201302/26103516-a2bdbfbf31b24fe5a599069367446d16.png) 在Visual Studio 中打開Configuration.cs文件。把Configuration.cs文件中的Seed方法,替換為下面的代碼: ~~~ protected override void Seed(MvcMovie.Models.MovieDBContext context) { context.Movies.AddOrUpdate( i => i.Title, new Movie { Title = "When Harry Met Sally", ReleaseDate = DateTime.Parse("1989-1-11"), Genre = "Romantic Comedy", Price = 7.99M }, new Movie { Title = "Ghostbusters ", ReleaseDate = DateTime.Parse("1984-3-13"), Genre = "Comedy", Price = 8.99M }, new Movie { Title = "Ghostbusters 2", ReleaseDate = DateTime.Parse("1986-2-23"), Genre = "Comedy", Price = 9.99M }, new Movie { Title = "Rio Bravo", ReleaseDate = DateTime.Parse("1959-4-15"), Genre = "Western", Price = 3.99M } ); } ~~~ 在Movie下面出現的紅色波浪線上右鍵單擊,并選擇**Resolve**然后點擊**using MvcMovie.Models;** [![clip_image006](https://box.kancloud.cn/2016-08-08_57a81c696bfc0.png "clip_image006") ](http://images.cnitblog.com/blog/139239/201302/26103519-5ac9cd6b8fb24ab0a215fe765c5cb608.png) 這樣做之后,將添加以下的 using語句: using MvcMovie.Models; 每次Code First Migrations 會調用Seed 方法(即,在程序包管理器控制臺中調用**update-database**),并且此次調用會更新行:更新已經插入的行,或把不存在的行也插入。 **按 CTRL-SHIFT-B 來Build工程。**(如果此次Build不成功,以下的步驟將會失敗。) 下一步是創建一個`DbMigration`類,用于初始化數據庫遷移。此遷移類將創建新的數據庫,這也就是為什么在之前的步驟中你要刪除`movie.mdf`文件。 在**軟件包管理器控制臺**窗口中,輸入"add-migration Initial"命令來創建初始遷移。" Initial" 的名稱是任意,是用于創建遷移文件的名稱。 [![clip_image007](https://box.kancloud.cn/2016-08-08_57a81c6985b9f.png "clip_image007") ](http://images.cnitblog.com/blog/139239/201302/26103522-26a4ea5c7dd04d57b0afa0718164af3c.png) Code First Migrations將會在Migrations文件夾中創建另一個類文件 (文件名為:* {DateStamp}_Initial.cs* ),此類中包含的代碼將創建數據庫的Schema。遷移文件名使用時間戳作為前綴,以幫助用來排序和查找。查看*{DateStamp}_Initial.cs*文件,它包含了為電影數據庫創建電影表的說明。當您更新數據庫時,*{DateStamp}_Initial.cs*文件將會被運行并創建 DB 的Schema。然后**Seed**方法將運行,用來填充 DB 的測試數據。 在**軟件包管理器控制臺**中,輸入命令" update-database ",創建數據庫并運行**Seed**方法。 [![clip_image008](https://box.kancloud.cn/2016-08-08_57a81c699f142.png "clip_image008") ](http://images.cnitblog.com/blog/139239/201302/26103525-2c30bcf0187746648cbc801ae1f655ec.png) 如果您收到表已經存在并且無法創建的錯誤,可能是因為您已經刪除了數據庫,并且在執行`update-database`之前,您運行了應用程序。在這種情況下,再次刪除Movies.mdf文件,然后重試`update-database`命令。如果您仍遇到錯誤,刪除Migration文件夾及其內容,然后從頭開始重做。(即刪除Movies.mdf文件,然后再進行Enable-Migrations) 運行該應用程序,然后瀏覽URL /Movies Seed數據顯示如下: [![clip_image009](https://box.kancloud.cn/2016-08-08_57a81c69b4ec8.png "clip_image009") ](http://images.cnitblog.com/blog/139239/201302/26103527-dbe82fe3a3554a5185c4bd74bb567459.png) # 為影片模型添加評級屬性 給現有的`Movie`類,添加新的`Rating`屬性。打開Models\Movie.cs文件并添加如下`Rating`屬性: public string Rating { get; set; } 完整的`Movie`類如下: ~~~ public class Movie { public int ID { get; set; } public string Title { get; set; } public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; } public string Rating { get; set; } } ~~~ Build 應用程序 **Build**>**Build Move**或CTRL-SHIFT-B. 現在,您已經更新了`Model`類,您還需要更新*\Views\Movies\Index.cshtml*和*\Views\Movies\Create.cshtml*視圖模板,以便能在瀏覽器中顯示新的`Rating`屬性。 打開*\Views\Movies\Index.cshtml*文件,在**Price**列后面添加`<th>Rating</th>`的列頭。然后添加一個`<td>`列來顯示`@item.Rating`的值。下面是更新的*Index.cshtml*視圖模板: @model IEnumerable<MvcMovie.Models.Movie> @{ ViewBag.Title = "Index"; } <h2>Index</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table> <tr> <th> @Html.DisplayNameFor(model => model.Title) </th> <th> @Html.DisplayNameFor(model => model.ReleaseDate) </th> <th> @Html.DisplayNameFor(model => model.Genre) </th> <th> @Html.DisplayNameFor(model => model.Price) </th> <th> @Html.DisplayNameFor(model => model.Rating) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) </td> <td> @Html.DisplayFor(modelItem => item.ReleaseDate) </td> <td> @Html.DisplayFor(modelItem => item.Genre) </td> <td> @Html.DisplayFor(modelItem => item.Price) </td> <td> @Html.DisplayFor(modelItem => item.Rating) </td> <td> @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | @Html.ActionLink("Details", "Details", new { id=item.ID }) | @Html.ActionLink("Delete", "Delete", new { id=item.ID }) </td> </tr> } </table> 下一步,打開*\Views\Movies\Create.cshtml*文件,并在form標簽結束處的附近添加如下代碼。您可以在創建新的電影時指定一個電影等級。 <div class="editor-label"> @Html.LabelFor(model => model.Rating) </div> <div class="editor-field"> @Html.EditorFor(model => model.Rating) @Html.ValidationMessageFor(model => model.Rating) </div> 現在,您已經更新應用程序代碼以支持了新的`Rating`屬性。 現在運行該應用程序,然后瀏覽 */Movies*的 URL。然而,當您這樣做時,您將看到以下之一的錯誤信息: [![clip_image010](https://box.kancloud.cn/2016-08-08_57a81c69d662d.png "clip_image010") ](http://images.cnitblog.com/blog/139239/201302/26103530-144e249e876d4abbb9471c10ea08a6c6.png) [![clip_image011](https://box.kancloud.cn/2016-08-08_57a81c69f0e89.png "clip_image011") ](http://images.cnitblog.com/blog/139239/201302/26103533-728a67e5188345ec839af454afde15a1.png) 你現在看到此錯誤,因為在應用程序中,最新的`Movie`模型類和現有的數據庫`Movie`表的Schema不同。(數據庫表中,沒有`Rating`列。) 我們將使用Code First Migrations 來解決這一問題。 更新Seed方法,以便它能為新的列提供一個值。打開 Migrations\Configuration.cs 文件,并將Rating 字段添加到影片的每個對象。 ~~~ new Movie ??????? { ??????????? Title = "When Harry Met Sally", ??????????? ReleaseDate = DateTime.Parse("1989-1-11"), ??????????? Genre = "Romantic Comedy", ??????????? Rating = "G", ??????????? Price = 7.99M ??????? }, ~~~ Build解決方案,然后打開 **軟件包管理器控制臺 **窗口,并輸入以下命令: `add-migration AddRatingMig` `add-migration`命令告訴migration framework,來檢查當前電影模型與當前的影片 DB Schema并創建必要的代碼以將數據庫遷移到新的模型。AddRatingMig 是一個任意的文件名參數,用于命名migration文件。它將有助于使得遷移步驟成為一個有意義的名字。 當命令完成后,用Visual Studio 打開類文件,新繼承自`DbMIgration` 類的定義,并在`Up` 方法中,您可以看到創建新列的代碼: public partial class AddRatingMig : DbMigration{ public override void Up() { AddColumn("dbo.Movies", "Rating", c => c.String()); } public override void Down() { DropColumn("dbo.Movies", "Rating"); }} Build解決方案,然后在 **程序包管理器控制臺 **窗口中輸入"update-database"命令。 下面的圖片顯示了 **程序包管理器控制臺 **窗口的輸出 (AddRatingMig 的前綴時間戳將有所不同)。 [![clip_image012](https://box.kancloud.cn/2016-08-08_57a81c6a1a111.png "clip_image012") ](http://images.cnitblog.com/blog/139239/201302/26103536-fe402381df9040cdabb2f019681f3bfd.png) 重新運行應用程序,然后瀏覽 /Movies 的 URL。您可以看到新的評級字段。 [![clip_image013](https://box.kancloud.cn/2016-08-08_57a81c6a32750.png "clip_image013") ](http://images.cnitblog.com/blog/139239/201302/26103542-1394ea9741a44c97a561e2186d102a34.png) 單擊**CreateNew**鏈接來添加一部新電影。注意,請您可以為電影添加評級。 [![clip_image014](https://box.kancloud.cn/2016-08-08_57a81c6a543b0.png "clip_image014") ](http://images.cnitblog.com/blog/139239/201302/26103545-89ff632688d0460d911d756c5ee59df4.png) 單擊**Create**。新的電影,包括評級,將顯示在電影列表中: [![clip_image015](https://box.kancloud.cn/2016-08-08_57a81c6a6e792.png "clip_image015") ](http://images.cnitblog.com/blog/139239/201302/26103547-3c946779d5eb4cd48b14ea59dad39148.png) 此外您也應該把`Rating` 字段添加到編輯、 詳細信息和 SearchIndex 的視圖模板中。 您可以再次在 **程序包管理器控制臺 **窗口中輸入"update-database"命令,將不會有任何新的變化,因為數據庫Schema 和模型類現在是匹配的。 在本節中,您看到了如何修改模型對象并始終保持其和數據庫Schema的同步。您還學習了使用填充示例數據來創建新數據庫的例子,您可以反復嘗試。接下來,讓我們看看如何將豐富的驗證邏輯添加到模型類,并對模型類執行一些強制的業務規則驗證。 -------------------------------------------------------------------------------------------------------------------- 譯者注: 本系列共9篇文章,翻譯自Asp.Net MVC4 官方教程,由于本系列文章言簡意賅,篇幅適中,從一個示例開始講解,全文最終完成了一個管理影片的小系統,非常適合新手入門Asp.Net MVC4,并由此開始開發工作。9篇文章為: 1. Asp.Net MVC4 入門介紹 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4) · 譯文地址:[http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html](http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html) 2. 添加一個控制器 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller) · 譯文地址:[http://www.cnblogs.com/powertoolsteam/archive/2012/11/02/2751015.html](http://www.cnblogs.com/powertoolsteam/archive/2012/11/02/2751015.html) 3. 添加一個視圖 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view) · 譯文地址:[http://www.cnblogs.com/powertoolsteam/archive/2012/11/06/2756711.html](http://www.cnblogs.com/powertoolsteam/archive/2012/11/06/2756711.html) 4. 添加一個模型 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model) · 譯文地址:[http://www.cnblogs.com/powertoolsteam/archive/2012/12/17/2821495.html](http://www.cnblogs.com/powertoolsteam/archive/2012/12/17/2821495.html) 5. 從控制器訪問數據模型 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller) · 譯文地址:[http://www.cnblogs.com/powertoolsteam/archive/2013/01/11/2855935.html](http://www.cnblogs.com/powertoolsteam/archive/2013/01/11/2855935.html) 6. 驗證編輯方法和編輯視圖 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view) · 譯文地址:[http://www.cnblogs.com/powertoolsteam/archive/2013/01/24/2874622.html](http://www.cnblogs.com/powertoolsteam/archive/2013/01/24/2874622.html) 7. 給電影表和模型添加新字段 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table) · 譯文地址:[http://www.cnblogs.com/powertoolsteam/archive/2013/02/26/2933105.html](http://www.cnblogs.com/powertoolsteam/archive/2013/02/26/2933105.html) 8. 給數據模型添加校驗器 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model) · 譯文地址: 9. 查詢詳細信息和刪除記錄 · 原文地址:[http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods](http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods) · 譯文地址:
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看