0

我有3个表如下:

http://images.cnblogs.com/cnblogs_com/guozili/390921/o_ef.png

可以支持如下:

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;}

我希望它可以通过映射属性或诸如“.ToTable()...WithMany(c=>..).Map(.....”来工作吗?这些可以吗?

4

1 回答 1

0

这可以通过 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))
}

在这种情况下,您将拥有一张桌子:

  • 鉴别器列
  • 一个 FK 到产品
  • 一个 FK 到公司
于 2013-07-23T12:11:02.333 回答