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

发布于 2024-11-01 07:47:36 字数 345 浏览 1 评论 0原文

我有一个像这样的实体:

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

我想将 CultureInfoName 属性映射到实体框架为我生成的表中的单个列。

我该怎么办呢?目前,我已尝试查看 DbContext 的 OnModelCreating() 方法,但没有发现任何突出的内容。

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

非常感谢。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千笙结 2024-11-08 07:47:36

不幸的是 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);
        }
    }
}

在映射中您将定义:

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

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文