ADO.NET实体框架和WCF服务

时间:2010-08-17 13:49:17

标签: c# entity-framework ado.net windows-phone-7 ado.net-entity-data-model

我有一个简单的ADO.NET Entity Framework 4.0模型(edmx),它定义了具有外键关系的数据库表。

如何将这些实体发送到Windows Phone 7客户端?我已经使用方法...

创建了一个WCF服务(使用WShttpbinding)
public List<LocationCity> ListCities()
{    
   var dc = ObjectFactory.GetInstance<TestEntities>();
   var locs = dc.LocationCities.Take(10).ToList();
   return locs;
}

我还创建了一个简单的控制台应用程序来使用此服务,但它不起作用...在跟踪中我看到异常

  

可以的最大项目数   序列化或反序列化   对象图是'65536'

     

在   System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPart

然后我将MaxItemsInObjectGraph更改为一个庞大的数字,只是为了看看会发生什么,然后我得到一个堆栈溢出异常。因此,我认为dataContractSerializer在对象图上导航循环属性并进入递归循环。

我想做的就是将10个LocationCity实体发送到客户端(无论是Windows Phone还是控制台)。

我想我可以创建单独的DataContract POCO实体,并从上下文中的select中填充它们...但是,我真的不想在没有充分理由的情况下复制类。我想我一定是做错了。

我真的很感激一些帮助!

2 个答案:

答案 0 :(得分:2)

处理循环引用的技巧是使用[DataContract(IsReference = true)]。从.NET 3.5 SP1开始,IsReference属性可用,因此对您来说不应该有问题。

最好的问候,拉迪斯拉夫

答案 1 :(得分:0)

我在实体设计师中将“LazyLoadingEnabled”设置为true。只是把它设置为假,一切都很好!

相关问题