有没有一种方法可以在代码中克隆一个或多个实体(记录)

2023-12-22

注意:此时我在这个项目上停留在 2sxc v9.43.2 上。

从我的内容类型中选择一组记录后,我需要能够复制它们并沿途更改其中一个字段。到目前为止,这是我几乎可行的想法。用例很简单,他们有人们可以注册的程序。他们每个季节都有变化,但变化很小(价格、日期/时间等)。他们需要当前季节保持不变,同时编辑下一季节。因此,我们仍处于秋季(EntityId 1732),有 97 个活跃计划。我们想要单击一个按钮并按原样克隆所有 97 个节目,但进入新的下一季(下面的 1735 个)。

两个问题:

  1. 如果这种方式有效,那么什么语法适用于 ent/Attributes 来根据需要传递“对象”fields.Add() line
  2. 还有另一种 2sxc 方法可以做到这一点吗? App.Data.Create() 方法的其他变体或 API 中的其他方法?我只需要复制 1 个字段(季节)已更改的记录?
  3. 在最新版本的 2sxc v11.7+ 中是否有更好的方法来做到这一点?
    // we are going to duplicate the current Season's programs in to the new season
    // cheating for now, pre-made new 1735 in Seasons, current is 1732
    var programs = AsDynamic(App.Data["Programs"])
      .Where(p => ((List<DynamicEntity>)p.Season).First().EntityId == selectedSeason.EntityId);
    // @programs.Count() // 97
    foreach(var copy in programs)
    {
      var fields = new Dictionary<string, object>();
      var ent = AsEntity(copy);
      foreach(var attr in ent.Attributes)
      {
        if(attr.Key == "Season")
        {
          fields.Add(attr.Key, new List<int> { 1735 });
        }
        else
        {
          fields.Add(attr.Key, ent.GetBestValue(attr.Key));   // object??
        }
      }
      App.Data.Create("Programs", fields);
    }

至少有3种克隆方法

  1. 使用 edit-ui 的简单方法
  2. 使用 C# / 服务器 api 的困难方法
  3. 使用 REST api 的半困难方式

最简单的方法是使用编辑用户界面。您可以在替换对话框中看到一个示例,那里有一个复制按钮。这将打开包含现有项目的编辑 UI,但告诉它它是一个副本,因此在保存时它将创建一个新项目。

将其与预填充或其他东西结合起来,我想你就可以开始了。

第二种方法是使用 App.Data.Create - 您的代码看起来相当不错。我认为它也有效,你只是想知道是否有 1-liner - 或者我错了?

最后一种方法是使用 JS REST。基本上编写一些 JS 来获取一个项目,更改对象(重置 id)并将其发送回端点进行保存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有一种方法可以在代码中克隆一个或多个实体(记录) 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定

随机推荐