Entity Framework | Code First | Mapping of sub pro

2019-01-25 00:11发布

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条回答
该账号已被封号
2楼-- · 2019-01-25 00:21

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);
查看更多
登录 后发表回答