首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有类似于ORM for Unity使用仓库模式w/ Zenject的东西?

是否有类似于ORM for Unity使用仓库模式w/ Zenject的东西?
EN

Stack Overflow用户
提问于 2020-12-26 01:08:27
回答 1查看 566关注 0票数 0

长形,TL;DR低于

我目前正在使用Zenject开发一个游戏,并设计了我的UI和游戏体系结构,非常类似于一个web应用程序,其中有IConversationRepository-Interfaces,通过GetConversationById(...)等方法提供对Conversation等数据的访问。

到目前为止,接口都是由返回硬编码数据的虚拟程序实现的,但是当我继续下去的时候,这种情况必须改变。

如果这是一个web应用程序,我将只使用ORM并让它处理对象的查询和加载,所以我的问题是,这是否也存在于Unity / Zenject,如果不是,在使用Zenject时实现数据访问的正确方法是什么。

更新(回应与@Fattie的有益讨论)

我主要感兴趣的是一种通用的方法,可以用引用来加载对象,并能够查询对象。

例如,假设有一个Conversation对象,它包含许多ConversationItem,每个ConversationItem都有一个Person类型的扬声器字段。然后,我希望能够执行这样的操作:

代码语言:javascript
复制
var someSpeaker = personRepository.getById(100);
var conversation = conversationRepository.getById(0);

if (conversation.items[0].speaker == someSpeaker) {
    // I know, in this example this behaviour could be moved
    // into a method of Person to avoid the check for identity
    // but I hope the idea is understandable.
}

这里重要的是,如果扬声器对于多个SpeechItems是相同的,那么每个扬声器的引用对象也应该是相同的,这使得简单地反序列化JSON是不可行的。

TL;博士是否有类似于ORM的东西可以用于实现存储库模式?如果没有,我应该如何访问数据?

EN

回答 1

Stack Overflow用户

发布于 2020-12-27 00:05:08

  1. 如果我没有弄错的话,.Net中的标准.Net将在这里非常有用。 方便链接: https://programmingwithmosh.com/net/csharp-collections/
  2. 注在联合中很少需要关系数据库方法,对于100,000多个可搜索的文本项,日常的.Net数据结构将很好。您可以在联合中拼凑MySql,但这是每个平台单独处理它的问题。
  3. 关于团结本身。只需使用“游戏管理器”类型GameObject (简单地说,它被标记为DDOL),并在其上加上您的类(可能是"ConversationsProvider“或其他名称)。在统一中,单例本身是没有意义的,您很可能需要使用MonoBehavior的一般特性,所以您只需将其作为“游戏管理器”样式组件即可。"ConversationsProvider“可以是简单的,也可以是复杂的;它可能有许多子系统(与服务器、世代系统的实时连接,谁知道)。但是,从项目的其他部分来看,它只是一个您可以访问的完全简单的MonoBehavior --它完全是微不足道的。

这是你在团结中所做的“直截了当的”方式。如果OP正在试验Zenject,也许也可以尝试“通常”的方法!

为了更确切地回答OP的问题,是的,有几个我可以说是实验性的ORM/MySql解决方案。可以很容易地谷歌一些“在统一中使用的ORM”,示例,但我建议它只是在“实验性”方面。到目前为止,还没有一个真正简单的MySql统一解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65452964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档