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 回答