由于各种原因,我必须将我的Symbol类分成两个不同的类EquitySymbol和CommoditySymbol
在我的DailyClose类中,我最初使用SymbolId作为我的外键进行导航。我现在无法将符号分解为两个不同的表格。
这是我原来的DailyClose类:
public class DailyClose
{
public int DailyCloseId { get; set; }
[ForeignKey("Symbol")]
public int SymbolId { get; set; }
public Symbol Symbol {get; set;}
public DateTime Date { get; set; }
public decimal TodaysClose { get; set; }
}
我想要做的事情显然是我无法做到的:
public class DailyClose
{
public int DailyCloseId { get; set; }
public int SymbolId { get; set; }
[DefaultValue(true)]
public bool IsEquity { get; set; }
public DateTime Date { get; set; }
public decimal TodaysClose { get; set; }
public CommoditySymbol CommodSymbol { get; set; }
public EquitySymbol EquitySymbol { get; set; }
//constructor
public DailyClose(int symbolId)
{
SymbolId = symbolId;
if (IsEquity)
{
EquitySymbol = new EquitySymbol(SymbolId);
CommodSymbol = null;
}
else
{
CommodSymbol = new CommoditySymbol(SymbolId);
EquitySymbol = null;
}
}
}
良好的启用 - 迁移WAS告诉我这些类型不能为空,但在关闭解决方案并重新打开后,它现在允许我的原始方法
但由于这些类型(EquitySymbol& CommoditySymbol)不能为空,这不会起作用。但是如果我可以有一个通用属性,即T是基于IsEquity布尔值的EquitySymbol或CommoditySymbol,那将是理想的。
Property<T>
然后有
public class DailyClose
{
public int DailyCloseId { get; set; }
public int SymbolId { get; set; }
[DefaultValue(true)]
public bool IsEquity { get; set; }
public DateTime Date { get; set; }
public decimal TodaysClose { get; set; }
public Property<T> WhichSymbolType { get; set; }
//constructor
public DailyClose(int symbolId)
{
SymbolId = symbolId;
if (IsEquity)
{
WhichSymbolType = new EquitySymbol(SymbolId);
}
else
{
WhichSymbolType = new CommoditySymbol(SymbolId);
}
}
}
这可行吗?如果是,我没有看到如何实现这一目标。