EF7 中的脚手架不再产生“setter”

2024-05-05

我试图将我的个人项目从 .Net 6 升级到 7(主要是为了找出重大更改)。因此,我预计有些东西需要返工(情况总是如此!)。如果在某个时候我敢于完成这个项目,那么它就是一个非营利项目,但目前的情况还远未实现。

作为现在的上下文:我正在管理一个包含类别的表单(其中类别有问题)。类别和问题都有一个 Order 属性,因此如果用户一开始没有在正确的位置创建它们(或者如果他们忘记了),则可以对它们重新排序。

因此,从数据库检索表单后,我手动排序类别,然后手动排序问题,以便它们可以按正确的顺序显示。

我知道我不应该将实体模型用于任何类型的业务逻辑。我这样做是因为这样进行起来要快得多,因为这是我在空闲时间做的事情(做所有不同的业务模型、实体模型等需要更多的时间)。

在这个阶段,我主要寻找一个“简单”的解决方案,即使不完美。如果这是一个比恢复到 .NET6 花费更多时间的解决方案,那么这是一个好的开始:)

这是我现在针对该问题的代码:

public async Task<GetApprovalFormResponse<GetStaticErrorType>> GetAsync(GetApprovalFormRequest request)
{
    var form = await storage.ApprovalForms
        .Include(s => s.ApprovalSections).ThenInclude(s => s.ApprovalQuestions)
        .Where(s => s.IdApprovalForm == request.IdApprovalForm)
        .FirstOrDefaultAsync();

    if (form == null)
    {
        return new GetApprovalFormResponse<GetStaticErrorType> { Success = false, ApprovalForm = null };
    }

    //We must order the categories and then questions in them
    foreach (var category in form.ApprovalSections)
    {
        form.ApprovalSections = form.ApprovalSections.OrderBy(s => s.Order).ToList();

        foreach (var question in category.ApprovalQuestions)
        {
            category.ApprovalQuestions = category.ApprovalQuestions.OrderBy(s => s.Order).ToList();
        }
    }

    return new GetApprovalFormResponse<GetStaticErrorType> { Success = true, ApprovalForm = form };
}

从它的外观来看(我首先通过查看此线程得到了确认EF Core 6 到 7 集合不再有 setter https://stackoverflow.com/questions/74599304/ef-core-6-to-7-the-collections-no-longer-have-setters/74599455#74599455),我的问题是使用脚手架生成模型后缺少设置器。所以,我必须找到一种方法来解决这个新的现实。

我确实知道我可以更新模板,但如果可能的话,我会将其保留为最后的手段:)

另外,我知道我可以拆分数据库查询以直接按正确的顺序检索它们,而不是在代码中执行此操作。完全不确定如何在一个查询思想中做到这一点。这肯定可以解决我的问题。

起初,我想在其他帖子上发表评论,但似乎我对此没有足够的声誉。我通常会阅读答案,但我几乎从不自己发布内容。我想我知道我将来要做什么。


不直接回答您的问题,但您可以订购Include

var form = await storage.ApprovalForms
    .Include(s => s.ApprovalSections.OrderBy(x => x.Order))
    .ThenInclude(s => s.ApprovalQuestions.OrderBy(x => x.Order))
    .Where(s => s.IdApprovalForm == request.IdApprovalForm)
    .FirstOrDefaultAsync();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF7 中的脚手架不再产生“setter” 的相关文章

  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐