3

我首先使用实体​​框架代码,并且有一些具有这样的 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); 在对象上设置值时?

还是我最好将电子邮件的数据类型更改为字符串并在其他地方处理验证?

4

1 回答 1

6

一种可能的方法是让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]属性的信息,请参见此处:如何不首先保留属性 EF4 代码?

于 2012-07-19T18:40:04.807 回答