DevForce 2012 7.2.2、EF 5、Silverlight、C#、VS2012
type 的实体属性System.DayOfWeek
,错误(下面的完整错误消息)在尝试将此属性的更改更新/保存为其他值时需要将其添加到已知类型列表中。看起来很奇怪,考虑到它是一个系统可枚举,并且它被列为可以在 DevForce 文档中使用的特定示例(http://drc.ideablade.com/devforce-2012/bin/view/Documentation/enum-types)
所以我创建了一个IKnownTypeProvider
并添加DayOfWeek
为条目:
public class LwKnownTypeProvider : IKnownTypeProvider
{
public IEnumerable<Type> AddKnownTypes()
{
var list = new Type[]
{
typeof (DayOfWeek)
};
return list;
}
}
为了好玩,我还尝试更具体一些,以防工具在某个地方变得混乱(替换DayOfWeek
为System.DayOfWeek
整个),但这产生了相同的结果。
我检查过的事情:
- 被
IKnownTypeProvider
发现了吗?成功命中断点 - 是否在 SL 和服务器端?是的,类定义文件在两个项目中。是的,它列在已知类型的集合中(由 提供
var lstKnownTypes = IdeaBlade.EntityModel.KnownTypeHelper.GetServiceKnownTypes(null);
)
继承的代码,所以也许我忽略了一些东西,但我没有看到它。
添加 IKnownTypeProvider 之前保存更改时出错:
类型 'System.DayOfWeek' 与数据合同名称 DayOfWeek: http://schemas.datacontract.org/2005/07/system ' 不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 或将它们添加到传递给 DataContractSerializer 的已知类型列表中
添加上面列出的错误后IKnownTypeProvider
:
格式化程序在尝试反序列化消息时出现异常:尝试反序列化参数ideablade.com/EntityModel:workState 时出错。InnerException 消息是 'Element 'ideablade.com/EntityModel:OriginalValue' 包含来自映射到名称“ http://schemas.datacontract.org/2005/07/System:DayOfWeek ”的类型的数据。反序列化器不知道映射到此名称的任何类型。考虑使用 DataContractResolver 或将与“DayOfWeek”对应的类型添加到已知类型列表中 - 例如,通过添加 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。