Entity Framework | Code First | Mapping of sub pro

2019-01-24 23:47发布

问题:

I've got an entity like this :

public class Course {
    public CultureInfo Culture {get; set;}
    :
}

And I want to map just the Name property of CultureInfo to a single column in the table that Entity Framework generates for me.

How would I go about this? Currently I've tried looking at the OnModelCreating() method of the DbContext, but I'm not finding anything that is standing out.

I'm using Entity Framework 4.1 in and MVC 3 application with a Code First approach.

Many thanks.

回答1:

Unfrotunatelly EF can't do it this way. The workaround is defining separate property with the Name which will be mapped to the database and marking your Culture property as not mapped.

public class Course
{
    public CultureInfo Culture { get; set; }
    public string CultureName 
    {
        get 
        {
            if (Cuture != null)
            {
                return Culture.Name;
            }

            return null;
        }
        set
        {
            // same check for value can be placed here

            Culture = new CultureInfo(value);
        }
    }
}

And in mapping you will define:

modelBuilder.Entity<Course>()
            .Ignore(c => c.Culture);