【发布时间】:2017-11-15 00:44:02
【问题描述】:
我有以下课程设置
public abstract class SearchElement
{
public int Id { get; set; }
public SearchElement parent { get; set; }
public int Order { get; set; }
public UserQuery UserQuery { get; set; }
}
public class SearchGroup : SearchElement
{
public virtual ICollection<SearchElement> SearchObjects { get; set; }
public bool IsAndOperator { get; set; }
public SearchGroup()
{
this.SearchObjects = new List<SearchElement>();
}
}
public abstract class SearchCondition<IContext, OutputType> : SearchElement
{
public ComparisonTypes Comparison { get; set; }
public string Value { get; set; }
public abstract Expression<Func<OutputType, bool>> BuildConditionQuery(IContext context);
}
public class SearchPackage : SearchCondition<ISearchContext, ProjectParticipantQuestionnaireResponseGroup>
{
public override System.Linq.Expressions.Expression<Func<ProjectParticipantQuestionnaireResponseGroup, bool>> BuildConditionQuery(ISearchContext context)
{
return this.BuildCondition<ProjectParticipantQuestionnaireResponseGroup, int>(r => r.Package.Id, int.Parse(this.Value), this.Comparison);
}
}
现在由于某种原因,当我在 EntityFramework 上下文中指定时:
public DbSet<SearchElement> SearchElements { get; set; }
检测到 SearchGroup 类并在 SearchElement 表中创建相应的字段。但是,未检测到 SearchPackage 类,并且未在 SearchElement 表中创建其字段。
我当然可以为 SearchPackage 创建一个 DbSet,但是有多个类似的类(相同的继承,尽管有些具有不同的值),我不想为每个类创建一个 DbSet。有人对我能做什么有建议吗?
为了清楚起见:我使用的是 Entity Framework 6.1.3 和 C# 4.5.1
【问题讨论】:
标签: c# entity-framework entity-framework-6