У меня есть бизнес-объект, скажем User
.User
имеет поле PhoneNumber
, которое представлено строкой.По причинам, которые мне лучше всего оставлены, я создал класс PhoneNumber
, который имеет неявные операторы строки / из строки.Нужно ли делать что-то особенное, чтобы записать PhoneNumber
в виде строки в базу данных?Прямо сейчас Entity решила разбить мой класс PhoneNumber
на составные части (AreaCode
, Prefix
и т. Д.) И сохранить их в базе данных индивидуально.PhoneNumber
хранится в отдельной сборке.
public class PhoneNumber : IEquatable<PhoneNumber>, IComparable<PhoneNumber>
{
public static implicit operator string (PhoneNumber ph)
{
return ph.ToString ();
}
public static implicit operator PhoneNumber (string number)
{
return Parse(number);
}
public static PhoneNumber Parse(string number)
{
// ...
}
public override string ToString ()
{
// produce a Parse-compatible output
}
}
public class User
{
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual PhoneNumber Phone { get; set; }
}
public class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
}