私は現在自分の学習目的のために賞賛されたブログ以上の私の最初のMVCプロジェクトに取り組んでいます。その時点でコードが最初から存在していたとしても、データベースの最初のアプローチから始めました。それで、私は検証をどのように処理すべきかについて私にいくつかの混乱を与えました。MVC3バディークラス、ViewModelsとバリデーション
私はArticles
テーブルをデータベースに持っています。対応するArticle
クラスがEFによって生成されています。私はArticleViewModel
クラスもあり、それぞれのプロパティに一致するプロパティを持っています(Article
)。私は単純なCRUD操作を行っていますが、現在はArticleViewModel
の代わりに強い型のArticle
モデルを使用しており、データ検証は行われていません。
今日、私の選択肢を評価するためにいくつかの調査をしたところ、followingquestionsとthisブログ記事が見つかりました。だから私はMetadataType
属性をEF生成クラスに適用してそこに私の検証を入れることができるかのように見えますが、バリデーションを含むバディクラスを読むのは悪い習慣です。私はそれがなぜなのか分かりませんが、そうであれば、私はバディのクラスを無視し、次のようなことをするべきでしょうか?
[MetadataType(typeof(ArticleViewModel))]
public partial class Article
{
public Article(ArticleViewModel avm)
{
// Copy the properties from the ArticleViewModel into an Article.
}
}
その後、必要に応じてArticleViewModelにDataAnnotationsを適用し、ArticleViewModel
を使用するために私のコントローラ/ビューを更新しますか?
事前にお問い合わせいただきありがとうございます。 :)
正しいです、これは行く方法です – mare
ありがとうございます! –
ビューのモデルとして外部キーを持つ複雑なテーブルを使用し、そのビューを処理のために送信すると、パフォーマンスに何か影響はありますか?通常、私はビューでのみ使用されるモデルを作成し、そのモデルを自分のデータレイヤーに/から送信し、適切な方法でモデルを変換しました。私はこれを最近知ったが、検査の結果、モデルはLINQ2SQLとすべてのドリルダウンテーブルについて何かを保持していた...?このプラクティスを使用すると、1分に1000ページのビューが悪化しますか? – ppumkin