從多個方面探討dbfirst

一、什麼是dbfirst?

Dbfirst是一種開發模式,是指先搭建資料庫,然後通過ORM(對象關係映射)工具來生成代碼和數據模型。它相對於codefirst和model first而言,是一種更為傳統的開發方式,在多數情況下,選擇dbfirst開發模式可以帶來更多的好處。

二、為什麼選擇dbfirst?

1、更加方便的資料庫管理

public class DatabaseContext : DbContext
{
    public DatabaseContext() : base("DbFirstConnection") { }

    public virtual DbSet Users { get; set; }
}

對於一個擁有多張表的資料庫,通過dbfirst方式,我們只需要維護一個大的數據模型,來確保代碼的簡潔性,而對於codefirst和model first方式,我們則需要在每一個實體上進行大量的註解,來維護數據模型,這會使得我們的代碼變得蒼白而不簡潔。

2、更加方便的資料庫更新

Add-Migration DbFirstMigration
Update-Database

在資料庫更新的過程中,使用dbfirst方式同樣可以帶來更多的好處。我們可以直接在資料庫中更新、添加或刪除表,最後再通過ORM工具生成對應的數據模型,來確保資料庫更新的效率和準確性。

3、更加方便的團隊協作

在一個大型項目中,我們通常都需要多人協作,而dbfirst方式可以幫助我們快速生成數據模型,避免在數據模型上的重複工作。同時,在多人協作中,如果我們使用codefirst或model first方式來進行開發,在多人協作時管理起來則較為困難。

三、如何使用dbfirst?

1、使用VS中的「Entity Framework Designer」工具(只適用於EF6)

我們可以通過VS中的「Entity Framework Designer」工具來進行dbfirst開發。

var dbContext = new DatabaseContext();
var users = dbContext.Users.ToList();

2、使用Scaffold-DbContext命令(EF Core)

在EF Core中,我們可以使用Scaffold-DbContext命令來生成數據模型。

Scaffold-DbContext 'Data Source=.;Initial Catalog=DbFirstExample;Integrated Security=true;' Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

3、使用Database First生成器(EF Core設計器)

我們也可以使用EF Core設計器的Database First生成器來進行dbfirst方式的開發。

代碼示例:

public class DatabaseContext : DbContext
{
    public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) { }

    public virtual DbSet<User> Users { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>(entity =>
        {
            entity.HasKey(e => e.Id);
            entity.ToTable("dbo.Users");
            entity.Property(e => e.Id).HasColumnName("Id").ValueGeneratedOnAdd();
            entity.Property(e => e.Name)
            .HasColumnName("Name")
            .HasMaxLength(50)
            .IsUnicode(false);
        });
    }
}

四、如何避免常見的dbfirst錯誤?

1、避免在直接在資料庫中進行修改。

如果我們直接在資料庫中進行表結構的修改,將會導致ORM工具失效,從而導致程序無法正常運行。

2、避免手動編輯自動生成的代碼。

在執行Scaffold-DbContext或使用設計器生成數據模型後,我們通常都會自動生成相應的實體、數據上下文等代碼。在這種情況下,我們應該避免手動修改這些自動生成的代碼。

3、避免過度依賴ORM工具。

雖然ORM工具可以帶來很多好處,但是在開發中我們還是應該明確自己需要什麼,並謹慎地使用ORM工具。過度的依賴ORM工具,可能會導致整個項目過於臃腫、維護成本過高。

原創文章,作者:NKRAD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/318003.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NKRAD的頭像NKRAD
上一篇 2025-01-11 16:28
下一篇 2025-01-11 16:28

相關推薦

發表回復

登錄後才能評論