• ASP.NET MVC 4.0 学习4-Code First


    之前我們需要用到的數據,通過添加Entity實體數據模型把數據庫中需要的Database拉到項目中如下圖,

    而就是Code First就是相對於這種處理數據的方法而言的

     Code First更加準確的解讀是開發人員只需要編寫程式(Code Only),系統會自動建立模型和數據庫

    我們來新建一個專案看一下Code First的具體實現

    1,新專案的Model中加入類別MessageBoard存儲留言信息

    MessageBoard.cs中添加字段屬性:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel;
    
    namespace MvcApplication3.Models
    {
        public class MessageBoard
        {
            [Key]
            public int MsgID { get; set; }
    
            [Required]
            [DisplayName("姓名:")]
            public string Title { get; set; }
    
            [Required]
            [DisplayName("內容")]
            public string Content { get; set; }
        }
    }
    View Code

    2,Ctrl+Shift+B重建方案後,添加MessageController

    範本選擇讀寫功能,模型類別選擇剛建立的Model中的MessageBoard

    確認以後,我們看到Models和Views中自動生成了對應的文件,MessageController.cs和View中自動添加了相應增刪改:

    Ctrl+F5運行程式,輸入Message如:http://localhost:64570/Message  我們看到了Message的首頁,並且可以添加留言

    增刪查改的功能是我們剛才在添加控制器的時候選擇了“具有讀取/寫入...”功能系統自動實現的:

    我們剛才並沒有建立數據庫,新增的留言存放在哪裡了?

    項目中點擊查看所有文件,我們發現App_Data下面產生了.mdf文件,.mdf文件以及Models下的MvcApplication3Context.cs也是在我們添加MessageController這一步選擇“資料內容類別”的時候產生的:

      →→→→

     雙擊.mdf我們看到了生成的Table和Models下MessageBoard.cs中的屬性是一致的:

    這就是Code First ,我們只需要去編寫Models中的模型,添加Controller時候系統自動幫我們生成了和模型一致的數據庫文件

    接下來我們再看一下Models中的模型:

    Code First,Model資料模型中的class對應生成了數據庫中的Table: MessageBoard.cs 對應 MessageBoards表

    Model中的Class除了對屬性進行定義外,還能定義Table的名稱,Table中的主鍵以及Table間的一對多 多對多關係:

    Model中添加兩個模型類,BookModel.cs和AuthorModel.cs,類中借住System.Collenctons命名空間下的Icollection實現了表與表之

    間的對應關係:

    1,更新MessageBoard.cs類,添加Book和Author的模型定義: 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace MvcApplication3.Models
    {
        public class MessageBoard
        {
            [Key]
            public int MsgID { get; set; }
    
            [Required]
            [DisplayName("姓名:")]
            public string Title { get; set; }
    
            [Required]
            [DisplayName("內容")]
            public string Content { get; set; }
        }
        //定義表名稱
        [Table("MyTable")]
        public class BookModels
        {
            //定義主鍵Key
            [Key]
            [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
            public int BookID { get; set; }
    
            [Required]
            public string BookName { get; set; }
    
            [Required]
            public DateTime PublishTime { get; set; }
    
            //Book和作者的對應關係: N*1  
            public AuthorModels AuthorModels { get; set; }
        }
        //定義表名稱
        [Table("Author")]
        public class AuthorModels
        {
            [Key]
            [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
            public int AuthorID { get; set; }
    
            [Required]
            public string Name { get; set; }
    
            //作者和數的對應關係:一個作者對應多本數 1*多  
            [Required]
            public ICollection<BookModels> BookModels { get; set; }
        }
    
    }
    View Code

    2,更新MvcApplication3Context.cs文件:

    using System.Data.Entity;
    
    namespace MvcApplication3.Models
    {
        public class MvcApplication3Context : DbContext
        {
            // 您可以將自訂程式碼新增到這個檔案。變更不會遭到覆寫。
            // 
            // 如果您要 Entity Framework 每次在您變更模型結構描述時
            // 自動卸除再重新產生資料庫,請將下列
            // 程式碼新增到 Global.asax 檔案的 Application_Start 方法中。
            // 注意: 這將隨著每次模型變更而損毀並重新建立您的資料庫。
            // 
            // System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<MvcApplication3.Models.MvcApplication3Context>());
    
            public MvcApplication3Context() : base("name=MvcApplication3Context")
            {
            }
    
            public DbSet<MessageBoard> MessageBoards { get; set; }
    
            public DbSet<BookModels> BookModels { get; set; }
    
            public DbSet<AuthorModels> AuthorModels { get; set; }
        }
    }
    View Code

    3,打開套件管理器控制臺,逐步執行以下命令:

          以下是Code First Migration功能可以參考:http://msdn.microsoft.com/en-us/data/jj193542

    1. PM> Enable-Migrations -Force -ContextTypeName MvcApplication3.Models.MvcApplication3Context
    2. PM> Add-Migration AddNewMessageBoard
    3. PM> Update-Database

         

        執行成功:

      

           數據庫中我們看到新增加的Table:

      

  • 相关阅读:
    简明Secure boot介绍
    密码学有什么用?
    mkimage, no such file or dir
    嵌入式系统安全简介
    希尔排序
    jQuery选择器
    css 选择器
    安装 SQL Server 2008 和管理工具 SQL Server 2008 management studio 及相关问题解决
    mac下安装安卓开发环境
    IOS开发小记-内存管理
  • 原文地址:https://www.cnblogs.com/hishanghai/p/3938720.html
Copyright © 2020-2023  润新知