Entity Framework Core

EFCoreの規則覚え書き

今更ですがEFCoreの勉強中です。

DbSetのプロパティ名とテーブル名と異なるものに設定したいとき

  • 通常、各エンティティは、DbSetで指定したプロパティ名と同じテーブル名がマッピングされます。
  • よって、DB側のテーブル名とDbSetのプロパティ名を一致させる必要があります。
public virtual DbSet<Blog> Blog {  get; set; }

この制約に違反してプロパティ名をBlogsにすると実行時にエラーが発生します。 Microsoft.Data.SqlClient.SqlException: 'Invalid object name 'Blogs'.'

learn.microsoft.com

対応方法

DataAnnotationを使うと、テーブル名を明示的に指定でき、
DbSetのプロパティ名は自由に決めることができます。

public virtual DbSet<Blog> Blogs {  get; set; }

[Table("blog")]
public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}