0

LOB アプリに EF5 データベースの最初のモデルを使用しています。Code First から始めましたが、多対多の関係を正しく機能させるのに問題があったため、慣れ親しんだものを使用しています。

顧客の電話番号については、POCO クラス内のフォーマッターを使用して、データ入力の一部として数字以外のすべての文字を削除する作業を彼らに依頼しました。

データ注釈用のバディ クラスがありますが、書式設定が正しく行われません。リポジトリの一部として行う必要がある場合はそこで行いますが、データ アクセスの一部として行う方がよいのではないかと考えました。電話番号ライブラリを使用して有効性を確認していますが、余分な文字を入れずに番号をデータベースに保存したいだけです。

[MetadataType(typeof(CustomerMetadata))]
public partial class Customer
{
    public class CustomerMetadata
    {
        private string _phone;
        [PhoneNumber]
        [DataType(DataType.PhoneNumber)]
        public string Phone { get { return _phone; } set { _phone = FormatPhone(value); } }

        private string FormatPhone(string phone = "")
        {
            return phone == null ? "" : Regex.Replace(phone, "[^0-9]", "");
        }
    }
}

データ属性は機能していますが、書式設定は実際には機能していないので、これを行うためのより良い方法があるかどうか疑問に思っていましたか? ありがとう!

4

1 に答える 1

1

私の理解が正しければ、数値以外の文字を削除する効果的な方法を探しているだけですか? もしそうなら、私は常にこれにLINQを使用してきましたが、かなりうまくいきました:

phone == null ? string.Empty : new string((phone).Where(c => char.IsNumber(c)).ToArray());
于 2013-05-17T16:54:11.867 に答える