我正在使用 Entity Framework Code First,并且有一些类具有这样的 System.Net.Mail.MailAddress 类型。
public class Person
{
public MailAddress Email { get; set; }
}
当 EF 尝试创建数据库时出现此错误
"Problem in mapping fragments starting at line 6 No mapping for properties Person.Email"
我如何告诉 EF 将 Email.ToString() 的结果保存到数据库中,然后我可以创建一个新的 MailAddress(stringOfEmail);什么时候在对象上设置值?
还是我最好将电子邮件的数据类型更改为字符串并在其他地方处理验证?
最佳答案
一种可能的方法是让 MailAddress
属性不映射到数据库,但有第二个属性。像这样的东西:
public class Person
{
public string EmailString { get; set; }
[NotMapped]
public MailAddress Email
{
get { return new MailAddress(this.EmailString); }
set { this.EmailString = value.ToString(); }
}
}
有关 [NotMapped]
属性的信息,请参见此处:How not persist property EF4 code first?
关于c# - Entity Framework 代码优先将类型保存为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567167/