ASP.NET MVC——CodeFirst開發模式

来源:https://www.cnblogs.com/pengchong/archive/2020/02/23/12349563.html
-Advertisement-
Play Games

Entity Framework框架提供了幾種開發模式,比如Database First,Model First,Code First。Database First是最老也是應用得最廣泛的一種設計方式。Database First這種方式的設計高度依賴於資料庫中表的結構,根據表及表間的關係來創建模型 ...


   Entity Framework框架提供了幾種開發模式,比如Database First,Model First,Code First。Database First是最老也是應用得最廣泛的一種設計方式。Database First這種方式的設計高度依賴於資料庫中表的結構,根據表及表間的關係來創建模型。如果後期需求有所變更或者功能有很大變化的話,需要涉及到更改資料庫所付出的代價將會很大,因為之前編寫好的代碼將不再適用於新的表,我們必需重構以更改代碼中的邏輯以適應更改之後的表。Model First是創建ADO.NET實體對象以及它們之間的關係,然後再指定到資料庫的映射。這個實體對象即為Model。

       我們今天要講的是Code First(代碼先行)。它思想就是先定義模型中的類,再通過這些類生成資料庫。這種開發模式適合於全新的項目,它使得我們可以以代碼為核心進行設計而不是先構造資料庫,步驟如下。

       1.接下來我就以一個簡單的例子來介紹這種開發模式。我們的需求是兩個表,博客表和評論表。一個博客對應多個評論,一個評論對應一個博客。這是一對多關係。我們先新建一個ASP.NET MVC項目,並用NuGet安裝EntityFramework。然後建立兩個Model。

public class Blog

{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
    public DateTime Time { get; set; }
    public string Summary { get; set; }
    public string Content { get; set; }
 
    public virtual ICollection<Comment> Comments { get; set; } = new List<Comment>();
}
public class Comment
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }
        public string VisitorName { get; set; }
        public string Email { get; set; }
        public DateTime Time { get; set; }
        public string Content { get; set; }

        [ForeignKey("Blog")]
        public Guid BlogId { get; set; }
        public virtual Blog Blog { get; set; }
    }

 2.接下來我們創建數據上下文。新建一個文件夾叫Context,併在其中新建類,代碼如下:

 public class TestDbContext: DbContext
 {
        public TestDbContext()
          : base("name=ConString")
        {

        }
        #region 資料庫相關表 新增表需要在此添加對應關係 

        public virtual DbSet<Blog> Blog{ get; set; }
        public virtual DbSet<Comment>Comment{ get; set; } 
        #endregion
 }

3.接著我們在Web.config中來配置資料庫,在Web.config中的<configuration>節點中加入如下配置(註意:section節點和connectionStrings的位置)

  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework"
      type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
      requirePermission="false"/>
  </configSections>
  <connectionStrings>
    <add  name="ConString"  connectionString="Server=.;DataBase=test;Uid=sa;Pwd=123456" providerName="System.Data.SqlClient" />
  </connectionStrings>

4.添加完成之後,進行數據遷移

打開Package Manager Console(程式包管理控制台)

輸入命令 1、 enable-migrations 回車。2、add-migration  回車,輸入方便認識的名字 。3、下麵我們就執行正式遷移,輸入 update-database 回車,搞定。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 詳解CopyOnWrite容器及其源碼 在jave.util.concurrent包下有這樣兩個類:CopyOnWriteArrayList和CopyOnWriteArraySet。 其中利用到了CopyOnWrite機制,本篇就來聊聊CopyOnWrite技術與Java中的CopyOnWrite容... ...
  • python3-cookbook中每個小節以問題、解決方案和討論三個部分探討了Python3在某類問題中的最優解決方式,或者說是探討Python3本身的數據結構、函數、類等特性在某類問題上如何更好地使用。這本書對於加深Python3的理解和提升Python編程能力的都有顯著幫助,特別是對怎麼提高Py ...
  • (1)集群原理 在Redis集群中,所有的Redis節點彼此互聯,節點內部使用二進位協議優化傳輸速度和帶寬。 當一個節點掛掉後,集群中超過半數的節點檢測失效時才認為該節點已失效。不同於Tomcat集群 需要使用反向代理伺服器,Redis 集群中的任意節點都可以直接和Java客戶端連接。Redis 集 ...
  • 安裝JDK1.8,安裝時會安裝jdk、jre。 如果只是在IDEA中寫寫代碼,安裝完jdk,在IDEA中指定jdk路徑就可以了。 如果要在命令行下執行jdk的命令,比如java、javac,或者要使用tomcat等依賴jdk的,就需要配置jdk的環境變數。 jdk環境變數的配置 1、JAVA_HOM ...
  • PPT導出圖片質量太差?簡單操作直接導出印刷質地圖片 ​ PPT不僅可以用於展示文檔,還可以用於簡單圖片合成處理,同時,PPT文檔還可以全部導出為圖片. 預設情況下,PPT導出的圖片為96DPI,辛苦做的圖片無法適應很多場合的使用。其實,在windows 下只需要一個小小的設置,就可以導出300DP ...
  • 最近在給客戶開發 Azure DevOps Exension, 該擴展中某個功能需要調用使用 .NET Core 3 寫的 Web Api。 在拜讀了 "Authenticating requests to your service" 之後,我給 Web Api 增加了 JWT 認證。 PS: 我沒 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/8242238.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第十一個模式--解釋器模式,也是面向對象設計模式的最後一個模式。先要說明一下,其實這個模式不是最後一個模 式(按Go ...
  • 1,安裝WinccV7.4並破解: 安裝WinccV7.4SP1. 安裝授權文件---根據提示 安裝免狗驅動,根據提示 安裝SImatic.net v13.2,連接PLC, 首先在同一個區域網裡面,如果是路由器,則可以採用禁用/啟用網路的方法進行讓路由器分配IP地址. 然後在控制面版--->PG..... ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...