我有一个相当复杂的Web表单,使用DynamicData和一堆自定义的FieldTemplates。在.NET 3.5 SP1下一切正常...然后我转换为.NET 4.0并且一些字段拒绝加载给出错误,如:
System.InvalidOperationException:表'Tickets'没有名为'Contact'的列。
堆栈跟踪显示抛出实际异常的System.Web.DynamicData.MetaTable.GetColumn(String columnName),因此认为该功能已更改了某些内容。不知道是什么,但是...... :(
我已经验证了列是否存在(我可以使用Eval()等进行访问,但DynamicControl将找不到列。)更糟糕的是,有几个字段可以使用它我可以在工作的列和不工作的列之间看到任何真正不同的东西。所有不起作用的都是关联,但也有一些协会也可以使用。
编辑:刚刚更改了问题标题......我使用System.Web.DynamicData.MetaTable.GetTable()跟踪并抓取了MetaTable本身,确定MetaTable缺少该列。我只是不明白为什么?答案 0 :(得分:0)
最后想出来......
协会正在使用不是主键的列。因此,通过将Child表中涉及的所有列设置为主键,它将再次在.NET 4中运行。