Jive Boogie
Jive Boogie

Reputation: 1265

Entity Framework Code First Saving type as string

I am using Entity Framework Code First and have some Classes with a System.Net.Mail.MailAddress type like this.

public class Person 
{
 public MailAddress Email { get; set; }
}

When EF tries to create the DB I get this error

"Problem in mapping fragments starting at line 6 No mapping for properties Person.Email"

How can I tell EF to just save the result of the Email.ToString() to the DB and then I can make a new MailAddress(stringOfEmail); when setting the value on the object?

Or am I better off just changing he data type for Email to a string and handle the validation somewhere else?

Upvotes: 4

Views: 1056

Answers (1)

CodingWithSpike
CodingWithSpike

Reputation: 43748

One possible way would be to have the MailAddress property not mapped to the DB, but have a 2nd property that is. something like:

public class Person
{
    public string EmailString { get; set; }

    [NotMapped]
    public MailAddress Email
    {
        get { return new MailAddress(this.EmailString); }
        set { this.EmailString = value.ToString(); }
    }
}

See here for info on the [NotMapped] attribute: How not persist property EF4 code first?

Upvotes: 6

Related Questions