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'.'
対応方法
DataAnnotationを使うと、テーブル名を明示的に指定でき、
DbSetのプロパティ名は自由に決めることができます。
public virtual DbSet<Blog> Blogs { get; set; } [Table("blog")] public class Blog { public int BlogId { get; set; } public string Url { get; set; } }