ex) ItemId, PlayerId, GuildId
ex) [Table("Item")]
Nullable [Required] .isRequired()
문자열 길이 [MaxLength(20)] .HasMaxLength(20)
문자 형식 .IsUnicode(true)
[Table("Player")]
public class Player
{
public int PlayerId { get; set; }
[Required]
[MaxLength(20)]
public string Name { get; set; }
public Item Item { get; set; }
public Guild Guild { get; set; }
}
복합키를 설정하려면
[Key]
[Column(Order = 0)]
public int ItemId { get; set; }
[Key]
[Column(Order = 1)]
public int TemplateId { get; set; }
또는
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Item>().HasKey(x => new { x.ItemId, x.TemplateId });
}
protected override void OnModelCreating(ModelBuilder builder)
{
// 인덱스 추가
builder.Entity<Item>().HasIndex(p => p.ItemId);
// 복합 인덱스 추가
builder.Entity<Item>().HasIndex(p => new { p.ItemId, p.TemplateId });
// 인덱스 이름을 정해서 추가
builder.Entity<Item>().HasIndex(p => p.ItemId).HasName("Index_ItemId");
// 유니크 인덱스 추가
builder.Entity<Item>().HasIndex(p => p.ItemId).IsUnique();
}
[Table("MyTable")] 또는
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Item>().ToTable("MyTable");
}
코딩을 도와주는 용도로 메모리에서만 들고 있도록 Entity 클래스를 정의하고 싶다면
[NotMapped] 또는 OnModelCreating에서 .Ignore() 사용
Convention < Data Annotation < Fluent API 순으로 우선순위가 존재한다.