Javascript JSON仅序列化第一级

特罗尔斯·拉森(Troels Larsen)

我在客户端上使用AngularJS构建应用程序,在后端使用ASP.NET WebAPI / Entity Framework。

我需要确保不存储或回滚完整的事务,而不是仅仅依靠RESTful服务。因此,我编写了一个JavaScript UnitOfWork实现,该实现跟踪每个加载的对象,并按类型分别存储它们。

我坚持他们时遇到了一个问题。

想象一下,我通过Web API加载了以下对象:

{
    FirstName: "Bob",
    LastName: "Jensen",
    Email: "[email protected]",
    Country: { ID: 61, Name = "Zimbabwe"},
    CountryID: 61,
    Animals: [
        { Name: "Mittens", ID: 2},
        { Name: "Rex", ID: 1}
    ]
}

现在,假设我更改了Bobs LastName,并希望保存它。我将UoW发送到服务器,并在EF上下文中,对已编辑的对象执行以下操作(到此为止,没有代码可以触摸obj):

databaseContext.Entry(obj).State = EntityState.Modified;

这给我这样的错误:

附加类型为'MyApp.Model.Country'的实体失败,因为相同类型的另一个实体已经具有相同的主键值。如果图形中的任何实体具有相互冲突的键值,则使用“附加”方法或将实体的状态设置为“不变”或“修改”时,可能会发生这种情况。这可能是因为某些实体是新实体,尚未收到数据库生成的键值。在这种情况下,请使用“添加”方法或“已添加”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”。

我的第一个想法是删除不需要的属性,然后再将其发送回服务器-因此,在我上面的JSON中,我应该将类似的结果发送回去,但是没有“ Country”和“ Animals”属性。我仍然想保留CountryID。

  1. 没有明确指定要删除的属性,是否可以做到这一点?
  2. 自从我遇到这个问题以来,我的方法在概念上有问题吗?我应该代替这个服务器端吗?
特罗尔斯·拉森(Troels Larsen)

设法通过删除我的JavaScript对象上的集合和对象引用来使其工作:

var clone = {};
for (prop in obj) {
    if (typeof obj[prop] == "string" || typeof obj[prop] == "number" || typeof obj[prop] == "boolean") {
        clone[prop] = obj[prop];
    }
}

现在,EF很高兴,并且我不发送整个图就节省了很小的带宽。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript JSON仅序列化第一级

来自分类Dev

如何仅使用JavaScript的stringify()方法在第一级上自定义JSON输出?

来自分类Dev

javascript仅返回字符串的一级域名

来自分类Dev

如何从第一级和第二级数组获取IDS列表-Javascript

来自分类Dev

Javascript和Json:从序列化和反序列化中排除字段

来自分类Dev

JavaScript的序列化表格

来自分类Dev

无法使用javascript检索django序列化的json

来自分类Dev

JavaScript:如何重命名对象中的所有键(在第一级处理所有键)?

来自分类Dev

检查JSON数组的第一级

来自分类Dev

遍历第一级 json 节点

来自分类Dev

XPATH仅选择第一级子级

来自分类Dev

序列化javascript对象并反序列化

来自分类Dev

序列化和反序列化javascript obj

来自分类Dev

在JavaScript中,有没有一个词来描述JSON可序列化的对象?

来自分类Dev

RapidJSON:如何仅解析第一级?

来自分类Dev

强制Maven仅使用第一级依赖项

来自分类Dev

xpath仅检索第一级的数据

来自分类Dev

RapidJSON:如何仅解析第一级?

来自分类Dev

如何序列化JavaScript对象

来自分类Dev

JavaScript:序列化后保留方法

来自分类Dev

在JavaScript中反序列化XML

来自分类Dev

如何序列化Blob JavaScript

来自分类Dev

使用JavaScript解析序列化数据

来自分类Dev

如何序列化javascript对象

来自分类Dev

JavaScript:序列化后保留方法

来自分类Dev

Javascript XML序列化(IE问题)

来自分类Dev

带数组的Javascript序列化参数

来自分类Dev

将工作正常的JavaScript对象序列化为仅保留属性的JSON?

来自分类Dev

将可工作的JavaScript对象序列化为仅保留属性的JSON?