0

Entity Framework を使用しているときに入力値を変更する方法を考えていました。今まで、エンティティ クラスに変換する自作のカスタム クラスを使用しています。やらなければならない仕事が倍増していると思います。カスタム クラスでは、セッターで受信値を変換します。オランダの郵便番号は、4 桁プラス 2 文字です。スペースで区切る人もいれば、結合する人もいます。この時点で、正規表現は必要に応じて文字から数字を分離します。Entity Framework を使用する場合。値をデータベースに書き込む前に、着信値を変更する可能性はありますか? もしそうなら、どうすればいいですか?

私は検証を探していましたが、値を効果的に変換せずにエラーをスローするだけの例をすべて見ました。

オランダの郵便番号の例: "5126HG" または "5126 HG" は、どちらもデータベースで同じ結果になるはずです。変更方法は知っていますが、どこでどのように申請すればよいかわかりません。

4

2 に答える 2

1

カスタム クラスを使用することは良い考えだと思います。DTO パターンを実装するのと同様であり、ビジネス レイヤーをデータ アクセス レイヤーから分離する良い方法です。しかし、いくつかの検証/変更メソッドをエンティティ クラスに追加したい場合は、それを行うことができます。

EF 4.1 を使用している場合は、ジェネレーターによって部分クラスとして作成されたエンティティの POCO クラスがあります。検証メソッドを追加するカスタム部分クラスを追加できますが、db 操作を実行する前にこれらのメソッドを明示的に呼び出す必要があります。

もう 1 つの方法は、カスタムの SaveChange ハンドラーを使用することです。ここでは、SaveChange のカスタマイズの例を見つけることができます。 http://msdn.microsoft.com/en-us/library/cc716714.aspx

于 2011-11-25T08:36:12.993 に答える
0

値をデータベースに書き込む前に、着信値を変更する可能性はありますか? もしそうなら、どうすればいいですか?

Controller入力を受け取り、検証し、変換してからEntity、有効で正しい一貫した値でプロパティを設定するメソッドを備えた別のクラスを用意することをお勧めします。

このようにしてEntities、常に有効で正確であり、データベースに書き込む前に値を変更するための非標準のメカニズムは必要ありません。

于 2015-10-09T11:10:46.180 に答える