<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本篇使用EF Code First搭建一個簡易ASP.NET MVC 4網站,並允許資料庫遷移。
建立一個ASP.NET MVC 4 網站。
在Models資料夾內建立Person類。
public class Person { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } }
在Controls資料夾內建立PersonController,選擇使用Entity Framework的模版、模型類,建立資料上下文類,如下:
點選"新增"後,除了在Controls資料夾內多了PersonController,在Models資料夾中多了PersonContext類,如下:
using System.Data.Entity; namespace MvcApplication1.Models { public class PersonContext : DbContext { // 您可以向此檔案中新增自定義程式碼。更改不會被覆蓋。 // // 如果您希望只要更改模型架構,Entity Framework // 就會自動刪除並重新生成資料庫,則將以下 // 程式碼新增到 Global.asax 檔案中的 Application_Start 方法。 // 注意: 這將在每次更改模型時銷燬並重新建立資料庫。 // // System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<MvcApplication1.Models.PersonContext>()); public PersonContext() : base("name=PersonContext") { } public DbSet<Person> People { get; set; } } }
在Web.config中的connectionStrings多瞭如下設定,選擇了預設的localdb資料庫。
<connectionStrings> ...... <add name="PersonContext" connectionString="Data Source=(localdb)v11.0; Initial Catalog=PersonContext-20150210155119; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|PersonContext-20150210155119.mdf" providerName="System.Data.SqlClient" /> </connectionStrings>
在Views/資料夾中多了Create.cshtml, Delete.cshtml, Details.cshtml, Edit.cshtml, Index.cshtml這個幾個檢視檔案。
現在,我們想啟動EF的自動遷移功能。點選"工具"-"庫程式包管理器"-"程式包管理器控制檯",輸入enable-migrations:
在根目錄下多了一個Migrations資料夾,以及生成了一個Configuration類,如下:
namespace MvcApplication1.Migrations { using System; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Linq; internal sealed class Configuration : DbMigrationsConfiguration<MvcApplication1.Models.PersonContext> { public Configuration() { AutomaticMigrationsEnabled = false; } protected override void Seed(MvcApplication1.Models.PersonContext context) { // This method will be called after migrating to the latest version. // You can use the DbSet<T>.AddOrUpdate() helper extension method // to avoid creating duplicate seed data. E.g. // // context.People.AddOrUpdate( // p => p.FullName, // new Person { FullName = "Andrew Peters" }, // new Person { FullName = "Brice Lambson" }, // new Person { FullName = "Rowan Miller" } // ); // } } }
以上,我們可以新增一些種子資料。
現在需要把種子資料遷移到資料庫,在"程式包管理器控制檯",輸入add-migration initial
:
此時,在Migrations資料夾內多了201502100756322_initial類,記錄了本次遷移的動作。
namespace MvcApplication1.Migrations { using System; using System.Data.Entity.Migrations; public partial class initial : DbMigration { public override void Up() { CreateTable( "dbo.People", c => new { ID = c.Int(nullable: false, identity: true), FirstName = c.String(), LastName = c.String(), }) .PrimaryKey(t => t.ID); } public override void Down() { DropTable("dbo.People"); } } }
最後別忘了要更新資料庫,在"程式包管理器控制檯",輸入update-database:
這時候,瀏覽/Person/Index,能實現所有的增刪改功能。
如果這時候,我們希望在Person中增加一個屬性,比如型別為int的Age屬性。
public class Person { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } }
我們如何告訴資料庫呢?
還是在"程式包管理器控制檯",輸入add-migration 名稱
:
此時,在Migrations資料夾內多了201502100812315_addedage類,記錄了本次遷移的動作。
最後,還在"程式包管理器控制檯",輸入update-database
以更新資料庫。
為了讓檢視與當前Person類同步,可以先後刪除Person資料夾和PersonController控制器,再重新建立PersonController控制器,選擇使用Entity Framework的模版、Person類,PersonContext上下文類。
至此,簡單體驗了EF Code First建立資料庫並實現資料庫遷移的方便之處。
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對it145.com的支援。如果你想了解更多相關內容請檢視下面相關連結
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45