0

はい、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 属性を取得するにはどうすればよいでしょうか?

4

1 に答える 1