Entity framework EF支持按条件联接表?

Entity framework EF支持按条件联接表?,entity-framework,Entity Framework,我有以下3个表格: class Product int Id {get;set;} string Name {get;set;} List<Picture> Picture {get;set;} class Picture ... [ForeignKey("Product.ProductId".....when type=1)] int ModelId {get;set;} ef可以提供以下支持: class Product int Id {get;set;} string

我有以下3个表格:

class Product
int Id {get;set;}
string Name {get;set;}
List<Picture> Picture {get;set;}

class Picture
...
[ForeignKey("Product.ProductId".....when type=1)] 
int ModelId {get;set;}

ef可以提供以下支持:

class Product
int Id {get;set;}
string Name {get;set;}
List<Picture> Picture {get;set;}

class Picture
...
[ForeignKey("Product.ProductId".....when type=1)] 
int ModelId {get;set;}
类产品
int Id{get;set;}
字符串名称{get;set;}
列表图片{get;set;}
班级照片
...
[ForeignKey(“Product.ProductId”……类型=1时)]
int ModelId{get;set;}
我希望它可以通过映射属性或“.ToTable()…with many(c=>…).Map(…”来工作 ef能做到这一点吗?

这可以通过TPH战略实现(但不完全如此),比如

public class Picture {
    public Int32 Id {get; set;}
    public String URL {get; set;}
}

public class ProductPicture : Picture {
    public virtual Product {get; set;}
}

public class CompanyPicture : Picture {
    public virtual Company {get; set;}
}
在构建模型时

protected override OnModelCreating(DbModelBuilder modelBuilder) {
    modelBuilder.Entity<Picture>()
        .Map<ProductPicture>(e => e.Requires("Type").HasValue(1))
        .Map<CompanyPicture>(e => e.Requires("Type").HasValue(2))
}
模型创建时受保护的覆盖(DbModelBuilder modelBuilder){
modelBuilder.Entity()
.Map(e=>e.Requires(“Type”).HasValue(1))
.Map(e=>e.Requires(“Type”).HasValue(2))
}
在这种情况下,您将有一个表,其中包含:

  • 鉴别器列
  • 一个FK到产品
  • 一个FK到公司