首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有任何方法指示实体框架在代码优先、表-按层次结构的方法中从列映射到模型属性?

是否有任何方法指示实体框架在代码优先、表-按层次结构的方法中从列映射到模型属性?
EN

Stack Overflow用户
提问于 2015-11-19 08:16:11
回答 1查看 868关注 0票数 1

我们在我们的MVC应用程序中使用Entity Framework 6.1,使用code-firsttable-per-hierarchy方法,因为我们是从零开始开发的,我们认为这种方法适合于快速开发。但是现在我有一个问题:假设我有一个基类和三个子类,它们如下所示:

代码语言:javascript
复制
public class BaseClass
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class SubClassOne : BaseClass
{
    public double Volume { get; set; }        
}

public class SubClassTwo : BaseClass
{
    public double Volume { get; set; }
}

public class SubClassThree : BaseClass
{
    public int Number { get; set; }
}

当使用默认设置时,EF将为数据库表创建6列: ID、Name、Number、Volume1、Number和判别器。卷列将仅用于SubClassOne,Volume1将用于SubClassTwo,Number仅用于SubClassThree。

我不太关心数据库行空间的“浪费”。但是,有一件事困扰着我:如果我是一个新开发人员,并且现在直接查看数据库,那么“册”和"Volume1“的名字就会让我感到困惑。我知道在代码端有SubClassOne和SubClassTwo,它们都有一个名为“音量”的属性。但我永远不知道哪一列是哪个班的。因此,我的问题是,是否有任何方法指示实体框架(例如使用属性)将SubClassOne.VolumeSubClassTwo.Volume映射到数据库中的Volume列。(另一个好处是我减少了一列,但这不是我的主要目标)。

我想,如果我不使用实体框架,代码优先,或每个层次结构表,并设计表,特别是DAL本人,我可以完全控制和实现这一点。但是现在呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-19 10:15:12

您可以对两个类使用属性列(“Volume1”)和列(“Volume2”),这样它就可以映射到相关的数据库列,并且具有相同的属性名“Volume2”。

代码语言:javascript
复制
public class BaseClass
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class SubClassOne : BaseClass
{
    [Column("Volume1")]   
    public double Volume { get; set; }        
}

public class SubClassTwo : BaseClass
{
    [Column("Volume2")] 
    public double Volume { get; set; }
}

public class SubClassThree : BaseClass
{
    public int Number { get; set; }
}

这是可行的,fine.If,任何疑问,然后告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33798441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档