Entity Framwork Core 資料註解(Data Annotations)使用方法

剑小秀發表於2024-05-20

在Entity Framework Core中,資料註解(Data Annotations)是透過在實體類的屬性上使用特性(Attributes)來配置實體與資料庫之間的對映關係的一種方式。這種方式比較直觀且易於理解,特別適用於簡單的配置需求。下面是一些使用資料註解配置實體的C#示例:

1. 配置主鍵

public class Blog
{
    [Key]
    public int BlogId { get; set; }
    
    public string Url { get; set; }
    
    // 其他屬性...
}

2. 配置列名

public class Blog
{
    public int BlogId { get; set; }
    
    [Column("BlogURL")]
    public string Url { get; set; }
    
    // 其他屬性...
}

3. 配置必需欄位和最大長度

public class Blog
{
    public int BlogId { get; set; }
    
    [Required]
    [MaxLength(200)]
    public string Title { get; set; }
    
    // 其他屬性...
}

4. 配置資料型別和精度

public class Product
{
    public int ProductId { get; set; }
    
    public string Name { get; set; }
    
    [Column(TypeName = "decimal(18, 2)")]
    public decimal Price { get; set; }
    
    // 其他屬性...
}

5. 配置併發令牌

public class Blog
{
    public int BlogId { get; set; }
    
    public string Url { get; set; }
    
    [Timestamp]
    public byte[] RowVersion { get; set; }
    
    // 其他屬性...
}

6. 配置導航屬性和外來鍵

public class Blog
{
    public int BlogId { get; set; }
    
    public string Url { get; set; }
    
    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    
    public string Title { get; set; }
    
    public string Content { get; set; }
    
    public int BlogId { get; set; }
    
    [ForeignKey("BlogId")]
    public Blog Blog { get; set; }
}

7. 配置不對映到資料庫的屬性

public class Blog
{
    public int BlogId { get; set; }
    
    public string Url { get; set; }
    
    [NotMapped]
    public string DisplayUrl => $"http://example.com/{Url}";
}

8. 配置索引

public class Blog
{
    public int BlogId { get; set; }
    
    [Index]
    public string Url { get; set; }
    
    // 其他屬性...
}

9. 配置唯一約束

public class User
{
    public int UserId { get; set; }
    
    [Index(IsUnique = true)]
    public string Email { get; set; }
    
    // 其他屬性...
}

在使用資料註解時,您不需要在DbContextOnModelCreating方法中顯式配置實體,因為EF Core會在執行時自動解析這些特性並應用相應的配置。不過,對於更復雜的配置需求,您可能需要結合使用Fluent API以獲得更大的靈活性和控制力。在實際專案中,通常建議根據具體情況選擇合適的配置方式。

相關文章