JSON.. NET LINQ到实体错误

本文关键字:实体 错误 LINQ NET JSON | 更新日期: 2023-09-27 18:04:54

我不知道如何才能完成这项任务,我已经尝试了很多方法,但都出现了这样或那样的错误。我试过的几种方法都没有出错,只是没有给我提供我想要的结果。

我正在寻找的最终结果的例子

{
    'type': 'NamedAA',
    'id': '63c0f27a-716e-804c-6873-cd99b945b63f',
    'x': 80,
    'y': 59,
    'width': 99,
    'height': 107,
    'userData': {
    },
    'cssClass': 'DBTable',
    'bgColor': '#DBDDDE',
    'color': '#D7D7D7',
    'stroke': 1,
    'alpha': 1,
    'radius': 3,
    'name': 'DuringHoursAutoAttendant',
    'entities': [
        {
            'text': 'id',
            'id': '49be7d78-4dcf-38ab-3733-b4108701f1'
        },
        {
            'text': 'employee_fk',
            'id': '49be7d78-4dcf-38ab-3733-b4108701fce4'
        }
    ]
}

给出错误的代码

  var aahope=new JObject(
    new JProperty("type", "NamedAA"),
    new JProperty("id",aaid),
    new JProperty("x",80),
    new JProperty("y",59),
    new JProperty("width",99),
    new JProperty("height",107),
    new JProperty("userData",new JObject()),
    new JProperty("cssClass", "DBTable"),
    new JProperty("bgColor", "#DBDDDE"),
    new JProperty("color", "#D7D7D7"),
    new JProperty("stroke",1),
    new JProperty("alpha",1),
    new JProperty("radius",3),
    new JProperty("name",""),
    new JProperty("entities", new JArray(
        (from e in db.HostedVoiceAAKeys
        where e.HostedVoiceAAID == aaid.HostedVoiceAAID
        select new JObject(
                    new JProperty("id",e.OptionKey),
                    new JProperty("text",e.OptionGuid))).ToArray()
        ))
    );

错误信息:

LINQ to Entities只支持无参数构造函数和初始化式。

描述:当前web请求执行过程中出现未处理的异常。请查看堆栈跟踪以获得有关错误及其在代码中的起源位置的更多信息。

Exception Details: System。NotSupportedException: LINQ to Entities中只支持无参数构造函数和初始化式。

Source Error: 
Line 2763:            var aaresults = "";
Line 2764:            var aahope=new JObject(
Line 2765:                new JProperty("type", "NamedAA"),
Line 2766:                new JProperty("id",aaid),

JSON.. NET LINQ到实体错误

不需要处理JObject/JProperty类。只需从这些类中创建一个对象

public class Entity
{
    public string text { get; set; }
    public string id { get; set; }
}
public class RootObject
{
    public string type { get; set; }
    public string id { get; set; }
    public int x { get; set; }
    public int y { get; set; }
    public int width { get; set; }
    public int height { get; set; }
    public UserData userData { get; set; }
    public string cssClass { get; set; }
    public string bgColor { get; set; }
    public string color { get; set; }
    public int stroke { get; set; }
    public int alpha { get; set; }
    public int radius { get; set; }
    public string name { get; set; }
    public List<Entity> entities { get; set; }
}

然后序列化你的对象

 string json = JsonConvert.SerializeObject(rootObj);

LINQ to Entities不允许使用带参数的构造函数在Select()内部实例化对象。

可以修改LINQ语句,使用ToList()执行查询,然后使用Select()将其投影到JObject s…

new JArray(
        (from e in db.HostedVoiceAAKeys
        where e.HostedVoiceAAID == aaid.HostedVoiceAAID)
            .ToList()
            .Select(h => new JObject(
                    new JProperty("id",e.OptionKey),
                    new JProperty("text",e.OptionGuid)))
            .ToArray()
     )

虽然作为L.B.