gpt4 book ai didi

wcf - 通过 WCF : how to prevent serialization of navigation fields? 发送 Entity Framework 实体

转载 作者:行者123 更新时间:2023-12-01 07:29:09 25 4
gpt4 key购买 nike

我在通过 WCF 发送带有导航属性的 Entity Framework 生成的实体时遇到问题。我有一个 Securities用于存储财务数据的数据库和其中的两个表:
Stock : Id, Symbol, CompanyName, ExchangeNameOption: Id, StockId, OptionType, Strike
我为此数据库创建了一个 Entity Framework 模型。然后我创建了 WCF 服务,它公开生成的 StockOption EF 实体到客户端。

我生成的实体 Stock有导航属性EntityCollection<Option> Options .
尝试返回时 Stock从 WCF 服务到客户端的实体,我得到一个 SerializationException : WCF 无法序列化 Options导航属性,因为数据库连接已经关闭。

我可以调用Options.Load()打开数据库连接时填充的方法Options属性,但是如果我不想加载 Stock 的完整对象图,我该怎么办实体?

最佳答案

我已经和这个人战斗了一段时间。

首先,我关闭了延迟加载。但是我的对象图中仍然存在循环问题。
然后,我把 [DataContract(IsReference = true)]我所有实体上的标签。那行得通,但是对于非规范化数据库,我仍然遇到很多性能问题。
最后,我分解并制作了 dtos,然后我使用 AutoMapper 来填充它们。

我的一个同事从一开始就告诉我这样做,我应该听他的。帮自己一个忙,不要犯和我一样的错误。

编辑
我忘了提到我在反序列化具有 ICollection<T> 类型属性的实体时遇到了问题。 .这些将反序列化为数组。不知何故 T[]工具ICollection<T>但是 AddRemove会抛出异常。这是使用 DTO 的另一个原因。

关于wcf - 通过 WCF : how to prevent serialization of navigation fields? 发送 Entity Framework 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9501913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com