实体框架| 代码优先| 从CultureInfo.Name映射子属性

jww*_*art 2 mapping code-first ef-code-first entity-framework-4.1 asp.net-mvc-3

我有这样一个实体:

public class Course {
    public CultureInfo Culture {get; set;}
    :
}
Run Code Online (Sandbox Code Playgroud)

我想只将Name属性映射CultureInfo到Entity Framework为我生成的表中的单个列.

我该怎么做?目前我已经尝试过查看DbContext的OnModelCreating()方法,但我找不到任何突出的东西.

我正在使用Entity Framework 4.1和MVC 3应用程序使用Code First方法.

非常感谢.

Lad*_*nka 5

Unfrotunatelly EF不能这样做.解决方法是定义单独的属性,该属性Name将映射到数据库并将您的Culture属性标记为未映射.

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在映射中,您将定义:

modelBuilder.Entity<Course>()
            .Ignore(c => c.Culture);
Run Code Online (Sandbox Code Playgroud)