EntityFramework WCF问题

时间:2009-10-25 02:33:15

标签: wcf entity-framework

现在我正在做一些涉及entityFramework和WCF的测试。据我了解,生成的EntityObjects是DataContracts,因此,它们可以序列化到客户端。

在我的例子中,我有一个“Country”实体,它有1个“Currency”作为属性,当我得到一个Country并尝试将它发送给客户端时,它会抛出一个异常,说不能写入数据。

但是,问题是,如果我获得货币(有一个国家的集合)并且不加载其国家,它确实有效。客户获得所有实体。

所以,作为总结: - 我有一个实体与另一个实体作为财产,不能被序列化。 - 我有另一个带有空属性列表的实体,并且它已成功序列化。

关于如何使其发挥作用的任何想法?

1 个答案:

答案 0 :(得分:0)

默认情况下,实体框架不会自动加载关联的实体,例如如果你加载你的“国家”实体,默认情况下除非你做某事,否则不会加载相关的“货币”。

您需要做的是在EF查询中执行.Include("Currency"),或手动加载关联的Currency属性。这是1:1的关系,对吗?在这种情况下,您的Country实体很可能包含一个名为CurrencyReference的成员,您可以检查是否已加载,如果没有,您可以手动加载相关实体:

if(!myCountry.CurrencyReference.IsLoaded)
{
   myCountry.CurrencyReference.Load();
}

当你这样做,然后序列化要通过WCF发送的对象 - 它现在有效吗?

马克