我正在使用EF Code First,并且拥有一个PhoneNumber类型的Telephone属性的实体。 PhoneNumber类有一些验证和便利方法,但基本上包含一个带有正确电话号码的字符串。
我想将它作为一个简单的字符串保存到数据库中。我该怎么做呢?
我是否需要注册某种类型的转换器,或者我是否真的需要在我的PhoneNumber类中公开一个公共属性,它被用作复杂类型(我宁愿没有像这样的公共属性,因为我会像PhoneNumber一样是不可变的。)
这是我的PhoneNumber课程:
public class PhoneNumber {
private string _number;
public PhoneNumber(string number) {
if (!IsValid(number)) {
throw new ArgumentException("Invalid Dutch phone number.");
}
_number = number;
}
private static string Sanitize(string number) {
return number.Trim()
.Replace("-", String.Empty)
.Replace(" ", String.Empty);
}
public bool IsValid() {
return IsValid(this);
}
public static bool IsValid(string number) {
if (number == null) {
return false;
}
var cleanNumber = Sanitize(number);
return Regex.IsMatch(cleanNumber, @"^06\d{8}$");
}
public static implicit operator PhoneNumber(string number) {
return new PhoneNumber(number);
}
public static implicit operator string(PhoneNumber number) {
return number.ToString();
}
}
答案 0 :(得分:1)
您必须将此添加到您的代码中:
public string Number
{
get { return _number; }
private set { _number = value; }
}
private PhoneNumber() {}
并将您的类映射为复杂类型:
modelBuilder.ComplexType<PhoneNumber>();