【问题标题】:Entity Framework Code First Saving type as string实体框架代码优先保存类型为字符串
【发布时间】:2012-07-19 18:33:38
【问题描述】:

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

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

【问题讨论】:

    标签: c# entity-framework-4.1


    【解决方案1】:

    一种可能的方法是让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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      相关资源
      最近更新 更多