【发布时间】:2016-01-09 01:20:36
【问题描述】:
我的代码如下(删除了与问题无关的属性):
public class Stock
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual ICollection<StockProperty> StockProperties { get; set; }
}
public class StockProperty
{
[Key, Column(Order = 0)]
public int StockId { get; set; }
[Key, Column(Order = 1)]
public int PropertyId { get; set; }
public IList<StockPropertyValue> Values { get; set; }
public virtual Property Property { get; set; }
public virtual Stock Stock { get; set; }
}
public class StockPropertyValue
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
public class Property
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual ICollection<StockProperty> StockProperties { get; set; }
}
通过这段代码,我在 StockPropertyValues 表中获得了两个外键,Stock_Id 和 Property_Id。我可以改为向 StockProperty 添加一个显式主键,这将在 StockPropertyValues 表中为我提供 StockPropertyId 的外键。 StockProperties 确实有一些它自己的附加数据。这些不同配置的优缺点是什么?
【问题讨论】:
标签: c# sql entity-framework database-design