1

mvc 4 とエンティティ フレームワークを使用してプロジェクトを実装しています。

どこでデータファーストアプローチを使用しました。さまざまなビジネス ロジックのモデルの部分クラスを実装しています。

私の質問は、プロパティに検証ルールを設定する方法です。以下に示します。

[Required]
public string FirstName { get; set; }

プロパティにこのコード「[必須]」を手動で追加した場合(エンティティフレームワークはモデルを生成します)。そして、データベースの変更のためにモデルを変更する必要がある場合。その後、すべての検証ルールがなくなりました

コードファーストのアプローチを使用せずに、どうすればこの問題を克服できますか。

4

2 に答える 2

2

ご存知のように、生成されたファイルを再生成すると変更が失われるため、生成されたファイルを編集しないでください。

エンティティをビューのモデルとして使用するよりも優れたアーキテクチャは、ビューとエンティティの間に別のビュー モデルを挿入することです。ビュー モデルは、ビューのニーズに密接に対応する必要があり、多くの場合、基になる複数のエンティティからデータを取得します。

属性は、エンティティではなくビュー モデル プロパティに適用されます。

ビュー モデルは、エンティティで遅延読み込みを使用している場合に特に危険な、アプリケーションの大量割り当ての脆弱性のリスクも軽減します。

于 2013-06-23T18:30:53.877 に答える
1

これを回避する別の方法 (CodeFirst を使用) は、Fluent Validation を使用することです。CustomerValidator は常に、再生成された Customer クラスを指します (明らかに Customer クラス名を変更しない限り)

using FluentValidation;

public class CustomerValidator : AbstractValidator<Customer> {
  public CustomerValidator {
    RuleFor(customer => customer.Surname).NotNull();
  }
}
于 2013-06-29T18:52:37.520 に答える