【问题标题】:How to avoid repeated data structures in Code First?如何避免 Code First 中重复的数据结构?
【发布时间】:2012-04-02 17:27:44
【问题描述】:

我发现自己有很多代表查找表的类,例如 JobTitle 和 Language,它们都共享相同的结构,即

public Guid Id { get; set; }
public string Name { get; set; }

如何在不引入额外属性的情况下避免重复这种结构,例如复杂类型的IdName,结构同上,例如

public class Gender
{
    public IdName Inner { get; set  }
}

我想避免引用 Gender.Inner.Name 而只引用 Gender.Name。

【问题讨论】:

    标签: c# .net entity-framework entity-framework-4.1 ef-code-first


    【解决方案1】:

    在这种情况下,创建一个包含IdName 的基类。

    public class BaseEntity 
    {
        public Guid Id { get; set; }
        public string Name { get; set; }    
    }
    

    您的Gender 将变为:

    public class Gender : BaseEntity
    {
        ...
    }
    

    为避免您不希望始终遵循以下规则的映射继承:

    • OnModelCreating 不映射 BaseEntity - 仅映射派生类
    • 您的上下文不包含 DbSetBaseEntity,仅适用于派生类型
    • 你没有在EntityTypeConfiguration注册BaseEntity

    如果您遵循这些规则,继承将仅在您的应用程序中,而不是在您的数据库中。

    【讨论】:

    • 谢谢@Ladislav。我什至从未想过继承只能保留在应用程序中。
    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2021-03-29
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多