當前位置: 妍妍網 > 碼農

asp.net core EFCore 內容配置與DbContext

2024-02-18碼農

Entity Framework Core(EFCore)是一個高效能的物件關系對映器(ORM),它允許.NET開發人員以物件導向的方式與資料庫進行互動。在ASP.NET Core應用程式中,EFCore是一個流行的選擇,因為它簡化了資料庫存取層的開發,並且與.NET Core框架緊密結合。

在使用EFCore時,開發者經常需要配置實體類的內容以及如何與資料庫中的表對應。同時,DbContext是EFCore的核心元件,用於資料庫操作。本文將詳細討論如何在ASP.NET Core中使用EFCore進行內容配置和DbContext的使用。

1. 內容配置

在EFCore中,可以透過數據註解或Fluent API來配置實體類的內容。

1.1 數據註解

數據註解是直接在實體類的內容上方使用特性(Attributes)來配置實體與資料庫表之間的對映關系。以下是一些常用的數據註解:

  • [Key] : 指定內容作為主鍵。

  • [Column(TypeName = "nvarchar(max)")] : 指定資料庫列的型別和大小。

  • [Required] : 指定內容在資料庫中不允許為空。

  • [MaxLength(50)] : 指定字串內容的最大長度。

  • [Index] : 為內容建立索引。

  • public classBlog
    {
    [Key]
    publicint BlogId { getset; }
    [Required]
    [MaxLength(50)]
    publicstring Url { getset; }
    }

    1.2 Fluent API

    Fluent API提供了更靈活和強大的配置選項。它通常在DbContext的衍生類別中重寫 OnModelCreating 方法時使用。Fluent API允許你對實體類進行更詳細的配置,包括復雜的關系對映和條件配置。

    public classBloggingContext : DbContext
    {
    public DbSet<Blog> Blogs { getset; }
    protectedoverridevoidOnModelCreating(ModelBuilder modelBuilder)
    {
    modelBuilder.Entity<Blog>()
    .HasKey(b => b.BlogId)
    .Property(b => b.Url)
    .IsRequired()
    .HasMaxLength(50);
    }
    }

    2. DbContext

    DbContext是EFCore的核心,它封裝了對資料庫的所有操作,包括CRUD操作、查詢、事務等。

    2.1 定義DbContext

    首先,你需要定義一個繼承自 DbContext 的類,並在這個類中定義 DbSet<TEntity> 內容,每個 DbSet<TEntity> 內容代表資料庫中的一個表。

    public classBloggingContext : DbContext
    {
    public DbSet<Blog> Blogs { getset; }
    // 可以添加更多的DbSet內容代表其他表
    }

    2.2 資料庫連線字串

    appsettings.json 中配置資料庫連線字串,然後在 Startup.cs ConfigureServices 方法中配置EFCore使用這個連線字串。

    {
    "ConnectionStrings": {
    "BloggingDatabase""Server=(localdb)\\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"
    },
    // ...
    }

    publicvoidConfigureServices(IServiceCollection services)
    {
    services.AddDbContext<BloggingContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
    // ...
    }

    2.3 資料庫遷移

    EFCore使用遷移來同步資料庫架構與模型之間的更改。透過執行遷移命令,EFCore可以自動建立資料庫、更新表結構或套用其他架構更改。

    dotnet ef migrations add InitialCreate
    dotnet ef database update

    總結

    Entity Framework Core提供了強大的內容配置和DbContext機制,使開發者能夠輕松地在ASP.NET Core應用程式中管理資料庫操作。透過數據註解和Fluent API,開發者可以靈活地定義實體類與資料庫表之間的對映關系。而DbContext則封裝了所有資料庫操作,簡化了數據存取層的開發。在實際開發中,結合使用這些功能,可以顯著提高開發效率和程式碼品質。