【发布时间】:2016-04-04 15:56:54
【问题描述】:
我的实体模型中有一个名为价格的表。它有几个名为 value0、value1、value2、value3、value4... 的字段(这些是它们的字面名称,sigh..)。我无法重命名它们或以任何方式更改它们。
我想要的是使用扩展实体来创建一个名为值的新属性。这将是一个包含 value1、value2 等的集合...
要访问这些值,我只需要编写 price.values[1]
为此,我需要属性更改通知。
到目前为止,我已经尝试过了;
public partial class Prices
{
private ObservableCollection<double?> values = null;
public ObservableCollection<double?> Values
{
get
{
if (values != null)
values.CollectionChanged -= values_CollectionChanged;
else
values = new ObservableCollection<double?>(new double?[14]);
values[0] = value0;
values[1] = value1;
values[2] = value2;
values.CollectionChanged += values_CollectionChanged;
return values;
}
private set
{
value0 = value[0];
value1 = value[1];
value2 = value[2];
}
}
private void values_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
Values = values;
}
}
尝试设置值时会出现问题。如果我尝试通过写来设置一个值
prices.values[0] = someValue;
新值并不总是反映在集合中(即当我之前设置了值然后尝试覆盖该值时)。
我愿意尝试任何可以实现我的目标的方法,我并不重视解决我的解决方案(尽管如果有人能解释我缺少什么那就太好了!)
【问题讨论】:
-
您需要使用集合的另一个实现,因为 ObservableCollection 不允许您覆盖索引器(并且您需要覆盖它以在设置期间引发您需要的事件)。顺便说一句,如果元素总是 14,为什么还需要一个集合?您可以在不使用集合的情况下在价格上实现索引器...
-
谢谢 bubi,不使用集合就实现价格索引器是什么意思? (对不起,我对这个行业还很陌生)-你说得对,总是有 14 个。
标签: entity-framework extended-properties