W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
在此部分中,Entity Framework Code First 遷移用于:
使用 EF Code First 自動創(chuàng)建數(shù)據(jù)庫時,Code First 將:
將 Rating 屬性添加到 Models/Movie.cs:
C#
public class Movie
{
public int Id { get; set; }
public string Title { get; set; }
[Display(Name = "Release Date")]
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
[Column(TypeName = "decimal(18, 2)")]
public decimal Price { get; set; }
public string Rating { get; set; }
}
生成應(yīng)用 (Ctrl+Shift+B)。
因?yàn)橐呀?jīng)添加新字段到 Movie 類,所以需要更新綁定允許名單,將此新屬性納入其中。 在 MoviesController.cs 中,更新 Create 和 Edit 操作方法的 [Bind] 屬性,以包括 Rating 屬性:
C#
[Bind("Id,Title,ReleaseDate,Genre,Price,Rating")]
更新視圖模板以在瀏覽器視圖中顯示、創(chuàng)建和編輯新的 Rating 屬性。
編輯 /Views/Movies/Index.cshtml 文件并添加 Rating 字段:
HTML
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Movies[0].Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Movies[0].ReleaseDate)
</th>
<th>
@Html.DisplayNameFor(model => model.Movies[0].Genre)
</th>
<th>
@Html.DisplayNameFor(model => model.Movies[0].Price)
</th>
<th>
@Html.DisplayNameFor(model => model.Movies[0].Rating)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Movies)
{
<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>
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
使用 Rating 字段更新 /Views/Movies/Create.cshtml。
可以復(fù)制/粘貼之前的“窗體組”,并讓 intelliSense 幫助更新字段。 IntelliSense 適用于標(biāo)記幫助程序。
更新 SeedData 類,使它提供新列的值。 示例更改如下所示,但可能需要對每個 new Movie 做出此更改。
C#
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-1-11"),
Genre = "Romantic Comedy",
Rating = "R",
Price = 7.99M
},
在 DB 更新為包括新字段之前,應(yīng)用將不會正常工作。 如果它現(xiàn)在運(yùn)行,將引發(fā)以下 SqlException:
SqlException: Invalid column name 'Rating'.
發(fā)生此錯誤是因?yàn)楦碌?Movie 模型類與現(xiàn)有數(shù)據(jù)庫的 Movie 表架構(gòu)不同。 (數(shù)據(jù)庫表中沒有 Rating 列。)
可通過幾種方法解決此錯誤:
對于本教程,請使用 Code First 遷移。
從“工具”菜單中,選擇“NuGet 包管理器”>“包管理器控制臺”。
在 PMC 中,輸入以下命令:
Add-Migration Rating
Update-Database
Add-Migration
命令會通知遷移框架使用當(dāng)前 Movie
DB 架構(gòu)檢查當(dāng)前 Movie
模型,并創(chuàng)建必要的代碼,將 DB 遷移到新模型。
名稱“Rating”是任意的,用于對遷移文件進(jìn)行命名。 為遷移文件使用有意義的名稱是有幫助的。
如果刪除 DB 中的所有記錄,初始化方法會設(shè)定 DB 種子,并將包括 Rating
字段。
運(yùn)行應(yīng)用,并驗(yàn)證是否可以創(chuàng)建/編輯/顯示具有 Rating 字段的電影。 應(yīng)向 Edit、Details 和 Delete 視圖模板添加 Rating 字段。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: