我正在使用以下几个实体:
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并告诉它外键,但我失败了。
你们能否对我有所了解?
谢谢,
答案 0 :(得分:3)
这不是一个简单的多对一关系吗?
Product.Store
Product.Store1
和for
只会将导航属性返回到他们的商店。
答案 1 :(得分:0)
我相信您的建模可以改进...... Product
不应该扩展Product
。您应该将它们分离,将促销点设置为产品和商店(如果您需要特定于商店的促销)...意味着Store
和Promotion
应该是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);
中的字段实体......进一步扩展,想象如果你想要一个涉及多种产品的促销活动会是什么样子(例如:肥皂和洗发水,运动鞋和袜子等......)