質問: 私は、ASP.NET Core(RC2)とORM Entity Framework Coreを使用してMVC-Webアプリケーションを実装しています。私は既にデータベース設計をしているので、Scaffold-DBContextコマンドでエンティティモデルを作成する必要があります。 これは正常に動作します。今、検証を追加するために生成されたエンティティにいくつかの注釈を追加したいと思います。たとえば、MaximumLength: ``` public class Blog { public int BlogId { get; set; } [MaxLength(500)] public string Url { get; set; } } ``` いくつかのデータベースが変更された場合は、scaffoldコマンドを再度使用する必要があります。しかし、この結果、いくつかの追加の注釈が失われてしまいます。エンティティモデルを失うことなく更新するにはどうすればよいですか? asp.netページまたはこのトピックから、それはEF6で可能と思われる。 EF7 / Coreでこれを達成するのと同様の方法はありますか?
回答: **はい、できます** 。 `Data Annotations`代わりに`Fluent API`を使用する**必要があります** 。 `Fluent API`使用例 ``` public partial class MyContext : DbContext { public DbSet Blogs { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .Property(b => b.Url) .HasMaxLength(500); } } ``` **リファレンス:** **EF core Doc** **OPのフィードバック** > しかし、データベースコンテキストクラスも生成されます。つまり、コマンドを再度使用すると、古いデータベースコンテキストが置き換えられます。 > > **私のおすすめ :** そのファイルのカスタム実装である`partial`クラスhere.keepを使用することができます。カスタムコードの一部は、コードを再生成するときに上書きされません。 **OPのフィードバック:** > 私は部分的なクラスでそれを解決することができますが、エンティティを生成した後、すべてのエンティティを通過し、すべての重複したプロパティを削除する必要があります。それでもまだエンティティを変更する必要があるので、私が探しているものではありません。 > > **私のおすすめ :** 重複したマッピングを削除する必要はありません。 B'cos EFは`Fluent API`優先順位を与え`Fluent API` 。マッピングがコード再生成によって自動的に行われたことは何でも構いません。 `Fluent API`を使用する`Fluent API`オーバーライドすることができ`Fluent API` 。これは`Fluent API`です`DataAnnotation` `Fluent API`と`Fluent API`を同時に使用することもでき`Fluent API` 。しかし、コードファーストは`Fluent API > data annotations > default conventions`優先し`Fluent API > data annotations > default conventions` 。