1

我想使用 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 支持处找到此问题的票证,但这 是对我们现在理解的问题的更简洁的陈述。

4

1 回答 1

0

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

    [NotMapped]
    public BaseBO BaseBo {
        get
        {
            return (BaseBO)this;
        }
    }
于 2015-02-06T20:04:57.787 回答