• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    ASP.NET MVC4入門教程(七):給電影表和模型添加新字段

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:37:45
    文檔

    ASP.NET MVC4入門教程(七):給電影表和模型添加新字段

    ASP.NET MVC4入門教程(七):給電影表和模型添加新字段:在本節(jié)中,您將使用Entity Framework Code First來(lái)實(shí)現(xiàn)模型類上的操作。從而使得這些操作和變更,可以應(yīng)用到數(shù)據(jù)庫(kù)中。 默認(rèn)情況下,就像您在之前的教程中所作的那樣,使用 Entity Framework Code First自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),Code First為數(shù)據(jù)庫(kù)所
    推薦度:
    導(dǎo)讀ASP.NET MVC4入門教程(七):給電影表和模型添加新字段:在本節(jié)中,您將使用Entity Framework Code First來(lái)實(shí)現(xiàn)模型類上的操作。從而使得這些操作和變更,可以應(yīng)用到數(shù)據(jù)庫(kù)中。 默認(rèn)情況下,就像您在之前的教程中所作的那樣,使用 Entity Framework Code First自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),Code First為數(shù)據(jù)庫(kù)所

    在本節(jié)中,您將使用Entity Framework Code First來(lái)實(shí)現(xiàn)模型類上的操作。從而使得這些操作和變更,可以應(yīng)用到數(shù)據(jù)庫(kù)中。

    默認(rèn)情況下,就像您在之前的教程中所作的那樣,使用 Entity Framework Code First自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),Code First為數(shù)據(jù)庫(kù)所添加的表,將幫助您跟蹤數(shù)據(jù)庫(kù)是否和從它生成的模型類是同步的。如果他們不是同步的,Entity Framework將拋出一個(gè)錯(cuò)誤。這非常方便的在開(kāi)發(fā)時(shí)就可以發(fā)現(xiàn)錯(cuò)誤,否則您可能會(huì)在運(yùn)行時(shí)才發(fā)現(xiàn)這個(gè)問(wèn)題。 (由一個(gè)晦澀的錯(cuò)誤信息,才發(fā)現(xiàn)這個(gè)問(wèn)題。)

    為對(duì)象模型的變更設(shè)置 Code First Migrations

    如果您使用的是 Visual Studio 2012,從解決方案資源管理器中雙擊Movies.mdf,打開(kāi)數(shù)據(jù)庫(kù)工具。Visual Studio Express for Web將顯示數(shù)據(jù)庫(kù)資源管理器,Visual Studio 2012 將顯示服務(wù)器資源管理器。如果您使用的是Visual Studio 2010,請(qǐng)使用 SQL Server對(duì)象資源管理器。

    在數(shù)據(jù)庫(kù)工具 (數(shù)據(jù)庫(kù)資源管理器、 服務(wù)器資源管理器或 SQL Server對(duì)象資源管理器),右鍵單擊MovieDBContext ,并選擇刪除以刪除電影數(shù)據(jù)庫(kù)。

    返回到解決方案資源管理器。在Movies.mdf文件上右鍵單擊,并選擇刪除以刪除電影數(shù)據(jù)庫(kù)。

    Build應(yīng)用程序,以確保沒(méi)有任何編譯錯(cuò)誤。

    從工具菜單上,單擊庫(kù)包管理器,然后點(diǎn)擊程序包管理器控制臺(tái).

    在 軟件包管理器控制臺(tái) 窗口中 PM> 提示符下輸入"Enable-Migrations –ContextTypeName MvcMovie.Models.MovieDBContext"。

    (如上所示)Enable-Migrations命令會(huì)在Migrations文件夾中創(chuàng)建一個(gè)Configuration.cs文件。

    在Visual Studio 中打開(kāi)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下面出現(xiàn)的紅色波浪線上右鍵單擊,并選擇Resolve然后點(diǎn)擊using MvcMovie.Models;

    這樣做之后,將添加以下的 using語(yǔ)句:

    using MvcMovie.Models;

    每次Code First Migrations 會(huì)調(diào)用Seed 方法(即,在程序包管理器控制臺(tái)中調(diào)用update-database),并且此次調(diào)用會(huì)更新行:更新已經(jīng)插入的行,或把不存在的行也插入。

    按 CTRL-SHIFT-B 來(lái)Build工程。(如果此次Build不成功,以下的步驟將會(huì)失敗。)

    下一步是創(chuàng)建一個(gè)DbMigration類,用于初始化數(shù)據(jù)庫(kù)遷移。此遷移類將創(chuàng)建新的數(shù)據(jù)庫(kù),這也就是為什么在之前的步驟中你要?jiǎng)h除movie.mdf文件。

    在軟件包管理器控制臺(tái)窗口中,輸入"add-migration Initial"命令來(lái)創(chuàng)建初始遷移。" Initial" 的名稱是任意,是用于創(chuàng)建遷移文件的名稱。

    Code First Migrations將會(huì)在Migrations文件夾中創(chuàng)建另一個(gè)類文件 (文件名為: {DateStamp}_Initial.cs ),此類中包含的代碼將創(chuàng)建數(shù)據(jù)庫(kù)的Schema。遷移文件名使用時(shí)間戳作為前綴,以幫助用來(lái)排序和查找。查看{DateStamp}_Initial.cs文件,它包含了為電影數(shù)據(jù)庫(kù)創(chuàng)建電影表的說(shuō)明。當(dāng)您更新數(shù)據(jù)庫(kù)時(shí),{DateStamp}_Initial.cs文件將會(huì)被運(yùn)行并創(chuàng)建 DB 的Schema。然后Seed方法將運(yùn)行,用來(lái)填充 DB 的測(cè)試數(shù)據(jù)。

    在軟件包管理器控制臺(tái)中,輸入命令" update-database ",創(chuàng)建數(shù)據(jù)庫(kù)并運(yùn)行Seed方法。

    如果您收到表已經(jīng)存在并且無(wú)法創(chuàng)建的錯(cuò)誤,可能是因?yàn)槟呀?jīng)刪除了數(shù)據(jù)庫(kù),并且在執(zhí)行update-database之前,您運(yùn)行了應(yīng)用程序。在這種情況下,再次刪除Movies.mdf文件,然后重試update-database命令。如果您仍遇到錯(cuò)誤,刪除Migration文件夾及其內(nèi)容,然后從頭開(kāi)始重做。(即刪除Movies.mdf文件,然后再進(jìn)行Enable-Migrations)

    運(yùn)行該應(yīng)用程序,然后瀏覽URL /Movies Seed數(shù)據(jù)顯示如下:

    為影片模型添加評(píng)級(jí)屬性

    給現(xiàn)有的Movie類,添加新的Rating屬性。打開(kāi)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 應(yīng)用程序 Build>Build Move或CTRL-SHIFT-B.

    現(xiàn)在,您已經(jīng)更新了Model類,您還需要更新\Views\Movies\Index.cshtml\Views\Movies\Create.cshtml視圖模板,以便能在瀏覽器中顯示新的Rating屬性。

    打開(kāi)\Views\Movies\Index.cshtml文件,在Price列后面添加<th>Rating</th>的列頭。然后添加一個(gè)<td>列來(lái)顯示@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>

    下一步,打開(kāi)\Views\Movies\Create.cshtml文件,并在form標(biāo)簽結(jié)束處的附近添加如下代碼。您可以在創(chuàng)建新的電影時(shí)指定一個(gè)電影等級(jí)。

    <div > @Html.LabelFor(model => model.Rating) </div>
    <div > @Html.EditorFor(model => model.Rating) @Html.ValidationMessageFor(model => model.Rating) </div>

    現(xiàn)在,您已經(jīng)更新應(yīng)用程序代碼以支持了新的Rating屬性。

    現(xiàn)在運(yùn)行該應(yīng)用程序,然后瀏覽 /Movies的 URL。然而,當(dāng)您這樣做時(shí),您將看到以下之一的錯(cuò)誤信息:

    你現(xiàn)在看到此錯(cuò)誤,因?yàn)樵趹?yīng)用程序中,最新的Movie模型類和現(xiàn)有的數(shù)據(jù)庫(kù)Movie表的Schema不同。(數(shù)據(jù)庫(kù)表中,沒(méi)有Rating列。)

    我們將使用Code First Migrations 來(lái)解決這一問(wèn)題。

    更新Seed方法,以便它能為新的列提供一個(gè)值。打開(kāi) Migrations\Configuration.cs 文件,并將Rating 字段添加到影片的每個(gè)對(duì)象。

    new Movie
    {
     Title = "When Harry Met Sally",
     ReleaseDate = DateTime.Parse("1989-1-11"),
     Genre = "Romantic Comedy",
     Rating = "G",
     Price = 7.99M
    },

    Build解決方案,然后打開(kāi) 軟件包管理器控制臺(tái) 窗口,并輸入以下命令:

    add-migration AddRatingMig

    add-migration命令告訴migration framework,來(lái)檢查當(dāng)前電影模型與當(dāng)前的影片 DB Schema并創(chuàng)建必要的代碼以將數(shù)據(jù)庫(kù)遷移到新的模型。AddRatingMig 是一個(gè)任意的文件名參數(shù),用于命名migration文件。它將有助于使得遷移步驟成為一個(gè)有意義的名字。

    當(dāng)命令完成后,用Visual Studio 打開(kāi)類文件,新繼承自DbMIgration 類的定義,并在Up 方法中,您可以看到創(chuàng)建新列的代碼:

    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解決方案,然后在 程序包管理器控制臺(tái) 窗口中輸入"update-database"命令。

    下面的圖片顯示了 程序包管理器控制臺(tái) 窗口的輸出 (AddRatingMig 的前綴時(shí)間戳將有所不同)。

    重新運(yùn)行應(yīng)用程序,然后瀏覽 /Movies 的 URL。您可以看到新的評(píng)級(jí)字段。

    單擊CreateNew鏈接來(lái)添加一部新電影。注意,請(qǐng)您可以為電影添加評(píng)級(jí)。

    單擊Create。新的電影,包括評(píng)級(jí),將顯示在電影列表中:

    此外您也應(yīng)該把Rating 字段添加到編輯、 詳細(xì)信息和 SearchIndex 的視圖模板中。

    您可以再次在 程序包管理器控制臺(tái) 窗口中輸入"update-database"命令,將不會(huì)有任何新的變化,因?yàn)閿?shù)據(jù)庫(kù)Schema 和模型類現(xiàn)在是匹配的。

    在本節(jié)中,您看到了如何修改模型對(duì)象并始終保持其和數(shù)據(jù)庫(kù)Schema的同步。您還學(xué)習(xí)了使用填充示例數(shù)據(jù)來(lái)創(chuàng)建新數(shù)據(jù)庫(kù)的例子,您可以反復(fù)嘗試。接下來(lái),讓我們看看如何將豐富的驗(yàn)證邏輯添加到模型類,并對(duì)模型類執(zhí)行一些強(qiáng)制的業(yè)務(wù)規(guī)則驗(yàn)證。

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ASP.NET MVC4入門教程(七):給電影表和模型添加新字段

    ASP.NET MVC4入門教程(七):給電影表和模型添加新字段:在本節(jié)中,您將使用Entity Framework Code First來(lái)實(shí)現(xiàn)模型類上的操作。從而使得這些操作和變更,可以應(yīng)用到數(shù)據(jù)庫(kù)中。 默認(rèn)情況下,就像您在之前的教程中所作的那樣,使用 Entity Framework Code First自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),Code First為數(shù)據(jù)庫(kù)所
    推薦度:
    標(biāo)簽: 教程 影片 電影
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 成人国产精品免费视频| 国产精品青草视频免费播放| 久久99国产精品久久99| 亚洲中文字幕久久精品无码喷水| 2023国产精品自拍| 精品性影院一区二区三区内射| 欧美亚洲综合免费精品高清在线观看| 亚洲人成亚洲精品| 国产成人精品优优av| 国产在线精品福利大全| 国产在线精品免费aaa片| 四虎永久在线精品免费一区二区| 国产精品主播一区二区| 91精品国产福利在线观看麻豆| 成人国产精品一区二区网站| 久久久免费精品re6| 中文字幕精品久久久久人妻| 久久狠狠一本精品综合网| 国产A∨国片精品一区二区| 九九精品免视看国产成人| 国内精品久久久久久久97牛牛 | 国产色精品vr一区区三区| 久久99国产精品久久久| 99香蕉国产精品偷在线观看 | 自拍偷在线精品自拍偷无码专区| 久久精品无码av| 久久精品国产精品亚洲下载| 黑人巨茎精品欧美一区二区| 四虎永久在线精品884aa下载| 欧美国产日韩精品| 午夜精品视频在线| 四虎永久在线精品国产免费| 九九99精品久久久久久| 免费91麻豆精品国产自产在线观看| 国产成人精品免费午夜app | 中文字幕日本精品一区二区三区| 亚洲AV无码之日韩精品| 午夜福利麻豆国产精品| 无码国模国产在线无码精品国产自在久国产 | 亚洲国产精品狼友中文久久久 | 国产精品毛片一区二区|