我有3个实体
Provider
{
ProviderId -PK
Name
}
ProviderType1
{
ProviderType1Id-PK
Name
}
ProviderType2
{
ProviderType2Id-PK
Name
}
然后我有一个名为PreferredProvider的另一个实体,它用作Provider之间的映射器,用于从ProviderType1或ProviderType2设置首选提供者。它具有这样的列。
PreferredProvider
{
PreferredProviderId - PK
ProviderId - FK Provider
PrefProviderId - FK ProviderType1,ProviderType2
PrefProviderType - discriminator column to detect type of provider
// navigation properties
[ForeignKey("PrefProviderId")]
ProviderType1 Prov1
// navigation properties
[ForeignKey("PrefProviderId")]
ProviderType2 Prov2
}
所以我正在使用像这样的导航属性
GetDbSet<PreferredProvider>().Where(p => p.ProviderId == 4 && p.PrefProviderType == 'ProviderType1').Select(p => p.Prov1).ToList();
我的问题是,当我处理一种类型,即ProviderType1(s)时它很好,但是当我必须获得包含ProviderType1(s)和ProviderType2(s)的提供者的所有首选提供者时,如何组合。实际上,我可以使用左连接但是想要更好的方法。请帮助我。