gpt4 book ai didi

c# - 如何从实体序列化为json?

转载 作者:太空狗 更新时间:2023-10-29 18:31:20 27 4
gpt4 key购买 nike

我正在尝试将( Entity Framework 6)实体序列化为 json。在通过 AsNoTracking() 方法序列化之前,我确保条目在内存中,但是我收到错误消息,因为它无法从条目中引用的不同表中接收值。

Inner Exception: When an object is returned with a NoTracking merge option, Load can only be called when the EntityCollection or EntityReference does not contain objects.

Exception: JsonSerializationException: Error getting value from 'TABLE_X' on 'System.Data.Entity.DynamicProxies....

代码:

List<Location> locations = new DbContext().Locations.Where(x => x.Type == 1).Take(5).AsNoTracking().ToList();
string s = JsonConvert.SerializeObject(locations, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });

我只想返回序列化实体的字符串。我不担心其他对象,只担心位置实体。

当我尝试处理连接然后进行 json 序列化时,我收到错误:ObjectContext 实例已被处理,不能再用于需要连接的操作。

我只想序列化我的列表,我不想返回/序列化任何外部依赖项。

最佳答案

这是 EF 的动态代理问题,您必须禁用它才能让您的代码正常工作

在继承自 DbContext 的类中

public class MyModelEntities : DbContext
{
public MyModelEntities()
{
//just disable it like this
Configuration.ProxyCreationEnabled = false;
}
}

主要是您的 JsonConvert 正在尝试序列化这样的对象 System.Data.Entity.DynamicProxies.Location_5E43C6C196972BF0754973E48C9C941092D86818CD94005E9A759B70BF6E48E6

由于代理,动态创建的无法找到

关于c# - 如何从实体序列化为json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522448/

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