用于从电话号码字段中删除非号码的C#EF5数据库首个数据批注

用于从电话号码字段中删除非号码的C#EF5数据库首个数据批注,c#,entity-framework,C#,Entity Framework,我正在使用EF5数据库第一个模型作为LOB应用程序。我首先开始编写代码,但在正确处理多对多关系时遇到了一些问题,所以我使用的是我熟悉的东西 在客户电话号码上,我让他们使用POCO类中的格式化程序,将所有非数字字符剥离为数据输入的一部分 我有一个用于数据注释的buddy类,但它不能正确地进行格式设置。如果我需要作为存储库的一部分来做,我会在那里做,但我认为作为数据访问的一部分来做可能会更好。我正在使用电话号码库检查有效性,但只想将号码存储在数据库中,不需要任何额外字符 [MetadataType(

我正在使用EF5数据库第一个模型作为LOB应用程序。我首先开始编写代码,但在正确处理多对多关系时遇到了一些问题,所以我使用的是我熟悉的东西

在客户电话号码上,我让他们使用POCO类中的格式化程序,将所有非数字字符剥离为数据输入的一部分

我有一个用于数据注释的buddy类,但它不能正确地进行格式设置。如果我需要作为存储库的一部分来做,我会在那里做,但我认为作为数据访问的一部分来做可能会更好。我正在使用电话号码库检查有效性,但只想将号码存储在数据库中,不需要任何额外字符

[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]", "");
        }
    }
}

数据属性正在工作,但格式实际上不起作用,所以我想知道是否有人有更好的方法来做到这一点?谢谢

如果我理解正确,您只是在寻找一种有效的方法来去除非数字字符?如果是这样的话,我一直使用LINQ来实现这一点,并且效果非常好:

phone == null ? string.Empty : new string((phone).Where(c => char.IsNumber(c)).ToArray());