我想使用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找到,但这是对我们现在所理解的问题的更简洁陈述。
答案 0 :(得分:0)
似乎如果我们将以下内容弹出到每个具体类中,那么我们就会获得所需的行为
[NotMapped]
public BaseBO BaseBo {
get
{
return (BaseBO)this;
}
}