我创建了 TPH 代码优先 tmodel 并在所需的鉴别器列上添加了 NotMappedAttribute。我可以将 DbSets 添加到子类的上下文中,并通过这些类型的集合进行查询,代码优先仍然是我的朋友。
但是,假设我有一个实体,它本身包含 BaseType 的集合,其中一些可能是一种类型,而另一些可能是另一种。如何编写查询以获取键入的记录?顺便说一下,我不想在延迟加载的内存集合上这样做。
假设有一个名为 Association 的类和一些子类 AssocA 和 AssocB,它们都映射到 Associations 表并在 AssocationTypeId 上进行区分。现在假设您有一个实体 - 为了参数,将其称为 Employee。所以例如
class Employee
{
public virtual Collection<Associations> MyAssociations {get;set;}
}
现在我想查询数据库以查找 AssocA = 的员工?我不希望任何关联都等于?但特定类型的关联。我不能使用 GetType,因为 LinqToEntities 不能使用它。我不能使用 AttributeTypeId 因为它在代码优先映射中使用。
我错过了什么?我的做法是合理的。但我无法建模。