2016-05-03 16 views
0

私は自分のプロジェクトにASP.NET IDを使用しています。コードが自動的に入力され、POCOプロパティがない列

AspNetUsersというデータベースに直接新しい列を作成し、CreationDateという名前の既定値が現在の日付であり、期待どおりに格納されると定義しました。

問題は、データベースを再度生成すると、この列を再度作成する必要があることです。私は、生産現場や新しい環境でのことです。

私はそれは私が(そのデフォルト値で)OnModelCreatingでそれを定義することができるようにfluent APIを使用することが可能かどうかを知りたいです。

クラスは、ASP.NETが作成した(ApplicationDbContextApplicationUserなど)と私は、これは直接流暢APIを(と継承またはcreating all the classesません)を使用することにより可能であるかどうかを知りたいテンプレートからアイデンティティクラスの内部にあります。

答えて

1

Fluent APIで操作する場合は、ApplicationUserクラスにプロパティを追加する必要があります。私はなぜデフォルトのプロパティを拡張したくないのか分かりませんApplicationUser。私は私は本当に他の側面では必要がないという理由だけクラッセを拡張したくない

public class ApplicationUser : IdentityUser 
{ 
    //This is the property that will match your column 
    public DateTime CreationDate { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType) 
    { 

     var userIdentity = await manager.CreateIdentityAsync(this, authenticationType); 

     return userIdentity; 
    } 
} 
+0

:プロパティとしてのCreationDateを追加すると、列が作成されます。この列は、おそらくデータベース内でのみ見ることができ、これに対する 'View'は必要ありません。私はあなたの解決策を理解していますが、Fluent APIの列を作成することは可能ですか? –

+1

EFの背後にある考え方は、データベースをモデルと同期させることができるということです(これを行うために、EFはあなたのDb内のすべての単一オブジェクトを知る必要があります)。ビューにそのプロパティを表示する必要がないからといって、コード内にそのプロパティを持つ必要はありません。永続性とプレゼンテーションはお互いに関係ありません。私はあなたのコードに追加することをお勧めします。データベースを作成した後に毎回実行されるSQLスクリプトを作成する必要はありません(さらに、この方法でソースコントロールを取得します)。 –

関連する問題