gpt4 book ai didi

azure - 如何创建自定义实体而不继承 TableEntity 或实现 ITableEntity

转载 作者:行者123 更新时间:2023-12-01 03:26:14 24 4
gpt4 key购买 nike

是否可以在不实现 ITableEntity 或继承 TableEntity 的情况下创建自定义实体?

如果我正在实现 ITableEntity,那么它会迫使我实现一些我不想实现的其他方法。

如果我从 TableEntity 继承自定义实体,那么我需要在将其传递给表操作之前对其进行更新,这会引入无法模拟的直接依赖关系,并且我的 Controller 类变得不可测试。

我想做的就是创建自定义实体并保存在 Azure 表存储中。

最佳答案

Is it possible to create custom entities without implementing ITableEntity or inheriting from TableEntity?

严格地说:不。
您需要实现此接口(interface)或继承此类的原因是 TableOperation即以 ITableEntity 作为参数。

如果你确实希望只能使用自己的类和接口(interface),那么你可以自己实现与Azure服务的通信。例如,here是插入实体操作的描述。您必须编写一个包装器来...复制 Microsoft 库提供的现有功能。

但看起来你正在尝试做一些奇怪的事情。
第一件奇怪的事情是您正在尝试测试 Controller 。通常你不会这样做。您可以使用什么类型的 Controller 以及为什么要测试它们?
第二个奇怪的事情是,您试图将从 TableEntity 继承或实现 ITableEntity 的内容传递给某个不是存储库的方法或某个仅在数据层中工作的类。

通常,您永远不会在数据层类之外使用实现 ITableEntity 或从 TableStorage 继承的东西。该类应该只从某些存储中读取并检索映射到业务对象数据或写入某些存储,将DTO或业务层对象本身或简单类型(如字符串、整数、日期时间)作为参数。而且这样的类是不可测试的。它是数据层,您应该测试业务逻辑或在处理原始数据和数据存储的层之上的某些层。

因此,请考虑在系统中引入新的抽象级别 - 存储库或某种类似的东西,它将与存储一起使用,返回业务对象。这种抽象应该有一个可以轻松模拟和测试的接口(interface)。此类的方法应采用业务层对象、DTO 或 .NET 类型的对象。它仅用于 DI,不用于测试。此类类通常不会经过测试。

关于azure - 如何创建自定义实体而不继承 TableEntity 或实现 ITableEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41367548/

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