EF 6检索子自动生成的外键的父级

时间:2015-12-14 10:48:53

标签: c# .net entity-framework code-first ef-migrations

我正在使用以下几个实体:

public class Store {
    public int Id { get; set; }
    public virtual ICollection<Product> Products { get; set; }
    public virtual ICollection<Promotion> Promotions { get; set; }
}

public class Product {
    [product properties here...]
}

public class Promotion : Product {
    [extra promotion properties here...]
}

通过使用Code First,它生成了我的数据库。它生成了一个Products表,带有一个鉴别器(为了区分它所存储的类型),然后是一个Store_Id外键,当它是Product时填充,另一个Store_Id1在使用促销时使用。

现在,过了一段时间,我需要从特定的促销中访问商店。怎么做到呢?我尝试使用Fluent并告诉它外键,但我失败了。

你们能否对我有所了解?

谢谢,

2 个答案:

答案 0 :(得分:3)

这不是一个简单的多对一关系吗?

Product.Store

Product.Store1for只会将导航属性返回到他们的商店。

答案 1 :(得分:0)

我相信您的建模可以改进...... Product不应该扩展Product。您应该将它们分离,将促销点设置为产品和商店(如果您需要特定于商店的促销)...意味着StorePromotion应该是public int StoreID { get; set; } public virtual Store Store { get; set; } public int Store1ID { get; set; } public virtual Store Store1 { get; set; } modelBuilder.Entity<Store>() .HasMany(m => m.Products) .WithRequired(m => m.Store); modelBuilder.Entity<Store>() .HasMany(m => m.Promotions) .WithRequired(m => m.Store1); 中的字段实体......进一步扩展,想象如果你想要一个涉及多种产品的促销活动会是什么样子(例如:肥皂和洗发水,运动鞋和袜子等......)