我正在使用EF 4.0实体,其中LanguageCode
类型为String
,这是一个双字母语言代码,例如DE
或{{ 1}}。还有一个参考约束和EN
导航属性,但不包括Language
实体集。
我想在不加载Language
实体的情况下设置语言代码。但是,setter会抛出Language
。更确切地说,setter中的ArgumentOutOfRangeException
方法可以:
ReportPropertyChanges
OnLanguageCodeChanging(value);
ReportPropertyChanging("LanguageCode");
_LanguageCode = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("LanguageCode"); // ArgumentOutOfRangeException
OnLanguageCodeChanged();
不是ParamName
,而是value
。这很奇怪,不是吗?
谷歌将此问题带到了 Apparent Breaking Change in Framework 4 (MSDN社交版)。问题看起来很相似,但没有解决方案。任何微弱的想法都会非常酷......:)
实体绑定在Windows窗体应用程序中。我试图在一个小的演示应用程序中重现该行为,但不幸的是我失败了。也许问题不在于实体本身?
编辑:这是异常的堆栈跟踪(包括外部代码):
rowIndex
答案 0 :(得分:1)
List<T>
绑定到BindingList
。细节视图的DataGrid
和一些文本框都绑定到它。当我添加新项目时,DataGrid
未收到通知(因为List<T>
未实施IBindingList
)。
该记录尚未添加到网格中,因此Windows Forms的绑定魔法尝试更新不存在的单元格。
我解决了这个问题:myBindingSource.DataSource = new BindingList<T>(myList); // List<T> myList
(由于评论中的提示,我发现了这个问题。)