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