现在我正在做一些涉及entityFramework和WCF的测试。据我了解,生成的EntityObjects是DataContracts,因此,它们可以序列化到客户端。
在我的例子中,我有一个“Country”实体,它有1个“Currency”作为属性,当我得到一个Country并尝试将它发送给客户端时,它会抛出一个异常,说不能写入数据。
但是,问题是,如果我获得货币(有一个国家的集合)并且不加载其国家,它确实有效。客户获得所有实体。
所以,作为总结: - 我有一个实体与另一个实体作为财产,不能被序列化。 - 我有另一个带有空属性列表的实体,并且它已成功序列化。
关于如何使其发挥作用的任何想法?
答案 0 :(得分:0)
默认情况下,实体框架不会自动加载关联的实体,例如如果你加载你的“国家”实体,默认情况下除非你做某事,否则不会加载相关的“货币”。
您需要做的是在EF查询中执行.Include("Currency")
,或手动加载关联的Currency属性。这是1:1的关系,对吗?在这种情况下,您的Country
实体很可能包含一个名为CurrencyReference
的成员,您可以检查是否已加载,如果没有,您可以手动加载相关实体:
if(!myCountry.CurrencyReference.IsLoaded)
{
myCountry.CurrencyReference.Load();
}
当你这样做,然后序列化要通过WCF发送的对象 - 它现在有效吗?
马克