国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

不會(huì)使用 EF Core 的 Code First 模式?來(lái)看看這篇文章,手把手地教你

這篇具有很好參考價(jià)值的文章主要介紹了不會(huì)使用 EF Core 的 Code First 模式?來(lái)看看這篇文章,手把手地教你。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

不會(huì)使用 EF Core 的 Code First 模式?來(lái)看看這篇文章,手把手地教你

EF Core Code First 是什么

Code First 是 Entity Framework Core (簡(jiǎn)稱 EF Core) 的一種開(kāi)發(fā)模式,它允許開(kāi)發(fā)人員使用純粹的代碼來(lái)定義數(shù)據(jù)模型,通過(guò)它,可以極大地提高開(kāi)發(fā)效率:

  1. 使用 Code First 開(kāi)發(fā)模式,你可以專注于定義領(lǐng)域模型和業(yè)務(wù)邏輯,而無(wú)需關(guān)注數(shù)據(jù)庫(kù)的細(xì)節(jié),能夠更快地構(gòu)建應(yīng)用程序
  2. Code First 是真正地面向?qū)ο蟮姆绞絹?lái)定義數(shù)據(jù)模型,包括實(shí)體類、關(guān)系、繼承等,這些都讓數(shù)據(jù)模型的設(shè)計(jì)更加直觀和易于理解
  3. Code First 支持多種數(shù)據(jù)庫(kù),包括 SQL Server、MySQL、PostgreSQL 等,你可以在不同的數(shù)據(jù)庫(kù)之間進(jìn)行切換而無(wú)需修改代碼
  4. Code First 提供了數(shù)據(jù)庫(kù)遷移工具,可以根據(jù)模型變化自動(dòng)創(chuàng)建、更新和維護(hù)數(shù)據(jù)庫(kù)模式,數(shù)據(jù)庫(kù)的版本控制和遷移變得更加容易,也減少了手動(dòng)編寫 SQL 腳本的工作量

Step By Step 使用 Code First 步驟

  1. 創(chuàng)建一個(gè) asp.net core Console 項(xiàng)目
  2. 從 Nuget 安裝以下包

    Microsoft.EntityFrameworkCore.SqlServer
    Microsoft.EntityFrameworkCore.Tools

  3. 創(chuàng)建實(shí)體類 Article 和 Comment
    public class Article
    {
    	/// <summary>
    	/// 主鍵
    	/// </summary>
    	public long Id { get; set; }
    
    	/// <summary>
    	/// 標(biāo)題
    	/// </summary>
    	public string Title { get; set; }
    
    	/// <summary>
    	/// 內(nèi)容
    	/// </summary>
    	public string Content { get; set; }
    
    	/// <summary>
    	/// 此文章的若干條評(píng)論
    	/// </summary>
    	public List<Comment> Comments { get; set; } = new List<Comment>(); 
    }
    
    public class Comment
    {
    	public long Id { get; set; }
    	public Article Article { get; set; }
    	public long ArticleId { get; set; }
    	public string Message { get; set; }
    }
    
  4. 創(chuàng)建實(shí)現(xiàn)了IEntityTypeConfiguration接口的實(shí)體類的配置類,用于配置實(shí)體類和數(shù)據(jù)庫(kù)表的對(duì)應(yīng)關(guān)系
    using Microsoft.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore.Metadata.Builders;
    
    // IEntityTypeConfiguration的泛型參數(shù)類指定這個(gè)類要對(duì)實(shí)體類 Article 進(jìn)行配置
    class ArticleConfig : IEntityTypeConfiguration<Article>
    {
    	// 使用Fluent API的方式對(duì)實(shí)體類進(jìn)行配置
    	// 也可以在實(shí)體類中使用 Data Annotation 進(jìn)行配置,但那樣耦合太深,不推薦使用
    	public void Configure(EntityTypeBuilder<Article> builder)
    	{
    		
    		// 表示這個(gè)實(shí)體類對(duì)應(yīng)數(shù)據(jù)庫(kù)中名字為T_Articles的表
    		builder.ToTable("T_Articles");
    		builder.Property(p => p.Content).IsRequired().IsUnicode();
    		builder.Property(p => p.Title).IsRequired().IsUnicode()
    			.HasMaxLength(255);
    	}
    }
    
    class CommentConfig : IEntityTypeConfiguration<Comment>
    {
    	public void Configure(EntityTypeBuilder<Comment> builder)
    	{
    		builder.ToTable("T_Comments");
    
    		// 一條評(píng)論對(duì)應(yīng)一篇文章,一篇文章有多條評(píng)論
    		builder.HasOne<Article>(c =>c.Article)
    			.WithMany(a => a.Comments)
    			.IsRequired()
    			.HasForeignKey(c => c.ArticleId);
    		builder.Property(p=>p.Message).IsRequired().IsUnicode();
    	}
    }
    
  5. 創(chuàng)建一個(gè)繼承自DbContext類的TestDbContext類(上下文類)
    using Microsoft.EntityFrameworkCore;
    
    class TestDbContext: DbContext
    {
    	public DbSet<Article> Articles { get; set; }
    	public DbSet<Comment> Comments { get; set; }
    
    	protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    	{
    		string connStr = "Server=(localdb)\\mssqllocaldb;Database=TestDB;Trusted_Connection=True;MultipleActiveResultSets=true";
    		optionsBuilder.UseSqlServer(connStr);
    	}
    
    	protected override void OnModelCreating(ModelBuilder modelBuilder)
    	{
    		base.OnModelCreating(modelBuilder);
    
    		// 表示加載當(dāng)前程序集中所有實(shí)現(xiàn)了IEntityTypeConfiguration接口的類
    		modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
    	}
    }	
    
  6. 遷移(根據(jù)實(shí)體類生成數(shù)據(jù)庫(kù)表)
    1. 打開(kāi) 菜單 - 工具 - 程序包管理器控制臺(tái)
    2. 默認(rèn)項(xiàng)目下拉框選擇目標(biāo)項(xiàng)目【可選,如果解決方案有多個(gè)項(xiàng)目】
    3. 執(zhí)行如下命令:

      Add-Migration InitialCreate 【InitialCreate 名字可隨意取,有意義就好】
      說(shuō)明:Add-Migration命令會(huì)自動(dòng)在項(xiàng)目的Migrations文件夾中生成C#代碼

    4. 執(zhí)行命令

      Update-database
      說(shuō)明:編譯并且執(zhí)行數(shù)據(jù)庫(kù)遷移代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-760683.html

    5. 查看 sql server 數(shù)據(jù)庫(kù)是否執(zhí)行成功
    6. 如果添加或修改字段,重復(fù)執(zhí)行3~4步命令
  7. 至此,EF Core 的 Code First 過(guò)程已經(jīng)完成,接著就可以對(duì)數(shù)據(jù)進(jìn)行增刪改查等操作

擴(kuò)展 - Fluent API 基本語(yǔ)法例子

  1. 視圖與實(shí)體類映射
    modelBuilder.Entity<Blog>().ToView("blogsView");
    
  2. 排除屬性映射
    modelBuilder.Entity<Blog>().Ignore(b => b. Name2);
    
  3. 數(shù)據(jù)庫(kù)表列名
    modelBuilder.Entity<Blog>().Property(b =>b.BlogId).HasColumnName("blog_id");
    
  4. 列數(shù)據(jù)類型
    builder.Property(e => e.Title) .HasColumnType("varchar(200)")
    
  5. 主鍵
    modelBuilder.Entity<Student>().HasKey(c => c.Number);
    
  6. 索引
    modelBuilder.Entity<Blog>().HasIndex(b => b.Url);
    
    // 復(fù)合索引
    modelBuilder.Entity<Person>().HasIndex(p => new { p.FirstName, p.LastName });
    
  7. 多對(duì)多
    builder.HasMany<Teacher>(c => c.Teachers).WithMany(t => t.Students)
    	.UsingEntity(j => j.ToTable("T_Students_Teachers"));
    
  8. 1對(duì)多
    builder.HasOne<Article>(c =>c.Article)
    	.WithMany(a => a.Comments)
    	.IsRequired()
    	.HasForeignKey(c => c.ArticleId);
    
  9. 1對(duì)1
    builder.HasOne<Delivery>(c => c.Delivery).WithOne(d => d.Order)
    	.HasForeignKey<Delivery>(d => d.OrderId);

到了這里,關(guān)于不會(huì)使用 EF Core 的 Code First 模式?來(lái)看看這篇文章,手把手地教你的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用EF Core創(chuàng)建webapi接口(二)

    使用EF Core創(chuàng)建webapi接口(二)

    有錯(cuò)誤歡迎大家給我指正 說(shuō)明:netcore webapi+net6+EF?Core版本,codefirst模式(代碼創(chuàng)建數(shù)據(jù)庫(kù)) 1.netcore webapi+net6+EF?Core版本,dbfirst模式(代碼生成數(shù)據(jù)庫(kù))見(jiàn):使用EF Core創(chuàng)建webapi接口(一)-CSDN博客 2.netcore webapi+net6+EF?Core+vue前后端聯(lián)動(dòng)版本,見(jiàn)netcore webapi+net6+EF Core+vue3前后端聯(lián)動(dòng)-CSD

    2024年02月21日
    瀏覽(25)
  • Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)

    Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)

    Entity Framework Core的前身是微軟提供并主推的ORM框架,簡(jiǎn)稱EF,其底層是對(duì)ADO.NET的封裝。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流數(shù)據(jù)庫(kù)。 首先是使用時(shí)的幾個(gè)模式的整理及其理解: Code First:根據(jù)代碼自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)甚至是數(shù)據(jù)庫(kù),可以支持多庫(kù)開(kāi)發(fā),代碼較少冗余

    2024年01月24日
    瀏覽(28)
  • 如何在 EF Core 中使用樂(lè)觀并發(fā)控制

    如何在 EF Core 中使用樂(lè)觀并發(fā)控制

    樂(lè)觀并發(fā)控制是一種處理并發(fā)訪問(wèn)的數(shù)據(jù)的方法,它基于一種樂(lè)觀的假設(shè),即認(rèn)為并發(fā)訪問(wèn)的數(shù)據(jù)沖突的概率很低。在樂(lè)觀并發(fā)控制中,系統(tǒng)不會(huì)立即對(duì)并發(fā)訪問(wèn)的數(shù)據(jù)進(jìn)行加鎖,而是在數(shù)據(jù)被修改時(shí),再檢查是否有其他并發(fā)操作已經(jīng)修改了數(shù)據(jù)。如果檢測(cè)到?jīng)_突,系統(tǒng) 再采

    2024年02月04日
    瀏覽(18)
  • tmux 使用看這一篇文章就夠了

    tmux 使用看這一篇文章就夠了

    tmux是一個(gè)終端復(fù)用工具,允許用戶在一個(gè)終端會(huì)話中同時(shí)管理多個(gè)終端窗口,提高了終端使用效率,尤其在服務(wù)器上進(jìn)行遠(yuǎn)程管理時(shí)更加實(shí)用。在tmux中,可以創(chuàng)建多個(gè)終端窗口和窗格,并在這些窗口和窗格之間自由切換,還可以在后臺(tái)運(yùn)行會(huì)話,即使在終端斷開(kāi)連接后也可

    2024年02月02日
    瀏覽(44)
  • ASP.NET Core Web API入門之三:使用EF Core

    ASP.NET Core Web API入門之三:使用EF Core

    一般來(lái)講我們做項(xiàng)目都會(huì)用實(shí)體類跟數(shù)據(jù)庫(kù)實(shí)體進(jìn)行關(guān)系對(duì)應(yīng),這樣的好處方便我們維護(hù)、增刪改查,并且可以減少SQL的編寫,從而統(tǒng)一風(fēng)格,那么 Entity Framework Core 就是很不錯(cuò)的ORM框架。 1、跨數(shù)據(jù)庫(kù)支持能力強(qiáng)大,只需修改配置就可以輕松實(shí)現(xiàn)數(shù)據(jù)庫(kù)切換。 2、提升了開(kāi)發(fā)效

    2024年02月10日
    瀏覽(22)
  • .NET使用一行命令輕松生成EF Core項(xiàng)目框架

    dotnet ef是Entity Framework Core(EF Core)的一個(gè)命令行工具,用于管理EF Core應(yīng)用程序的數(shù)據(jù)庫(kù)和代碼。除了提供管理數(shù)據(jù)庫(kù)的命令之外,dotnet ef還可以生成和管理實(shí)體和上下文代碼。本文將介紹如何使用dotnet ef動(dòng)態(tài)生成代碼。 一、環(huán)境準(zhǔn)備 1、項(xiàng)目準(zhǔn)備 用vs2022新建一個(gè).NET6的asp.

    2023年04月27日
    瀏覽(32)
  • EF.Core 使用Linq的Contact聯(lián)合查詢問(wèn)題

    在.net Core 5 WebAPI 項(xiàng)目中應(yīng)用 EF Core 5 實(shí)體框架,使用Linq的Contact聯(lián)合進(jìn)行多表查詢。 定義兩個(gè)子查詢語(yǔ)句,查詢結(jié)果 select 返回的對(duì)象結(jié)構(gòu)類型都是一致的。 Linq查詢結(jié)果集封裝對(duì)象類: DatingComplaint 實(shí)體類映射(Fluent API): 但在執(zhí)行到 ToListAsync() 代碼行查詢返回結(jié)果時(shí),拋

    2024年02月13日
    瀏覽(17)
  • 干貨|工作中要使用Git,看這篇文章就夠了

    干貨|工作中要使用Git,看這篇文章就夠了

    本文將從 Git 入門到進(jìn)階、由淺入深,從常用命令、分支管理、提交規(guī)范、vim 基本操作、進(jìn)階命令、沖突預(yù)防、沖突處理等多方面展開(kāi),足以輕松應(yīng)對(duì)工作中遇到的各種疑難雜癥,如果覺(jué)得有所幫助,還望看官高抬貴手給個(gè)贊唄,感謝! 雖說(shuō)現(xiàn)在工作中使用 Git 都會(huì)用一些圖

    2023年04月25日
    瀏覽(19)
  • NET8 ORM 使用AOT SqlSugar 和  EF Core

    NET8 ORM 使用AOT SqlSugar 和 EF Core

    .Net8的本地預(yù)編機(jī)器碼NET AOT,它幾乎進(jìn)行了100%的自舉。微軟為了擺脫C++的鉗制,做了很多努力。也就是代碼幾乎是用C#重寫,包括了虛擬機(jī),GC,內(nèi)存模型等等。而需要C++做的,也就僅僅是引導(dǎo)程序,本篇通過(guò)代碼來(lái)看下這段至關(guān)重要的引導(dǎo)程序的運(yùn)作模式。 ? ? ?SqlSugar已經(jīng)

    2024年02月05日
    瀏覽(58)
  • .net core 創(chuàng)建WebAPI以及使用EF DBFirst框架使用方法與疑問(wèn)解答(.net 6)

    EF語(yǔ)法包: 生成實(shí)體模型: 修改實(shí)體模型: 把生成的實(shí)體和上下文都輸出到某個(gè)文件夾命令 增加JSON格式腳手架: 若想增加某個(gè)版本json腳手架,需要加入后綴如: 問(wèn)題與解決方案: 1、問(wèn)題: Your startup project \\\'XXX\\\' doesn\\\'t reference Microsoft.EntityFrameworkCore.Design. This package is requi

    2024年02月16日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包