EF 4.0实体属性设置器抛出ArgumentOutRangeException

时间:2011-04-05 11:39:36

标签: c# .net entity-framework entity-framework-4

我正在使用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

1 个答案:

答案 0 :(得分:1)

List<T>绑定到BindingList。细节视图的DataGrid和一些文本框都绑定到它。当我添加新项目时,DataGrid未收到通知(因为List<T>未实施IBindingList)。

该记录尚未添加到网格中,因此Windows Forms的绑定魔法尝试更新不存在的单元格。

我解决了这个问题:

myBindingSource.DataSource = new BindingList<T>(myList); // List<T> myList

(由于评论中的提示,我发现了这个问题。)