使用TPC的DevExpress XAF EF,抽象类仅在运行时在模型设计器中可见

时间:2015-02-06 19:04:22

标签: entity-framework xaf

我想使用Table Per Concrete Class作为我的XAF Code First EF项目的继承策略。

我使用向导创建项目,然后粘贴以下

中的类

名称空间Solution12.Module.BusinessObjects {

public abstract class BaseBO  // abstract class helpful in getting TPC
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
}

[NavigationItem("People")]
[Table("People")]  // explicit table name is helpful in preventing TPH
public class Person : BaseBO
{
    public string PersonName { get; set; }
}

[NavigationItem("Organisation")]
[Table("Organisations")]
public class Organisation : BaseBO
{
    public string OrganisationName { get; set; }
}
public class Solution12DbContext : DbContext {
    ...
    public DbSet<Organisation> Organisations{ get; set; }

    public DbSet<Person> People { get; set; }
    //public DbSet<BaseBO> baseBOs { get; set; }  // having this will cause TPT instead of TPC
   }
}

这一切都按我的意思工作,以创建数据库结构。 但是我无法在设计时看到模型设计师的抽象类。 我可以在运行时看到模型设计器中的抽象类及其视图。

如何让模型设计师在设计时显示抽象类BaseBO?

这对我们来说是一个重大问题,因为运行时自定义存储在数据库中,因此不属于我们的源代码控制。

此问题的故障单也可以在Dev Express Support here找到,但这是对我们现在所理解的问题的更简洁陈述。

1 个答案:

答案 0 :(得分:0)

似乎如果我们将以下内容弹出到每个具体类中,那么我们就会获得所需的行为

    [NotMapped]
    public BaseBO BaseBo {
        get
        {
            return (BaseBO)this;
        }
    }