はい、EF 6.x エンティティを ViewModel であるかのように使用しているプロジェクトがあります。AutoMap はありません。リスクを調査して理解しています。
私のデータベースには多くの自然キーがあります。私の Code First POCO には、次のようなプロパティがあります。
Partial Public Class ProfilePriceGroup
<Key> <DatabaseGenerated(DatabaseGeneratedOption.None)>
Public Property ProfileId As Long
Public Property TargetRegion As String
Public Property Discount As Decimal = 0D
End Class
スキャフォールディング テンプレートの編集を試しています (私のプロジェクトは、SideWaffle VSIX を介して 'CodeTemplates' ディレクトリを備えています)。具体的には、MvcView/Edit.vb.t4 用に既定で生成されるカミソリに影響を与えようとしています。
キーはモデル バインダーに反映する重要な情報であるため、デフォルトのスキャフォールドは非表示の入力をレンダリングしますが、それが DatabaseGeneratedOption.None の場合、追加の可視ラベルをレンダリングして、ユーザーが「ProfileId」が何であるかをすぐに理解できるようにしたいと考えています。 '編集中です。
言い換えれば、デフォルトの足場は、ビューでは面白くない代理キーを想定していますが、私のキーは私のビューにとって興味深いものです。
これを実現する System.Web.Mvc 名前空間の一部である <HiddenInput(DisplayValue:=True)> DataAnnotation には興味がありません。今のところ、EF プロジェクトを MVC ライブラリから解放したいと考えています。
Microsoft.AspNet.Scaffolding.Core.Metadata.ModelMetadata の型である、渡された ModelMetadata パラメーターから、現在の MVC スキャフォールディングが PropertyMetadata の型を反復処理する方法を簡単に確認できます。
しかし、System.Data.Metadata.Edm 名前空間から派生すると思われるこの DatabaseGenerated 属性を取得するにはどうすればよいでしょうか?