我有一个应用程序使用Linq to SQL来获取数据并将数据存储到数据库。我有一个电话号码字段。我试图只将数字一直存储为数字,而不是其他数字。要做到这一点,我有两个我已经添加到字符串的扩展方法。 ToPhoneFormat()
按照用户需要格式化手机数字,如“(xxx)xxx-xxxx”或“xxx.xxx.xxxx”。 ToPhoneStorage()
删除所有格式并只保存数字中用于数据库的数字。Linq to SQL存储属性问题
下面是与LINQ的使用SQL代码示例:
private string homePhone;
[Column(CanBeNull = true, DbType = "nvarchar(25)", Name = "HOME_PHONE_NUM", Storage = "homePhone")]
[Display(Name = "Home Phone")]
public string HomePhone {
get { return homePhone.ToPhoneFormat(); }
set { homePhone = value.ToPhoneStorage(); }
}
当我提交使用DataContext的变化,LINQ的事实上确实来电来访,吸气,和格式化手机被发送回数据库。我不正确理解Storage
属性吗?似乎它应该像这样正确工作。
当然,我可以创建两个字段“PhoneDigits”和“PhoneFormatted”,并且只将列属性提供给“Phone”字段。所以我知道有一个工作。但是如果不这样做,Storage
属性会做什么?
我决定创建两个属性 - HomePhone和HomePhoneFormatted。 HomePhone直接映射到数据库字段。 HomePhoneFormatted获取并设置HomePhone字段,但应用格式化或删除它,并且不与数据库相关联。然后我在数据库上运行SQL命令以对现有数据进行格式化。谢谢(你的)信息。 – Paul