Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
689 views
in Technique[技术] by (71.8m points)

asp.net mvc 3 - Entity Framework | Code First | Mapping of sub property from CultureInfo.Name

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...