基于查询的实体数据类型的字段(基于来自其他应用的实体

时间:2019-05-20 12:59:12

标签: 2sxc

目标

我想在一个2sxc应用程序中集中基于人员的信息,并在其他应用程序中重用“人员”。就像新闻应用程序中的作者身份和团队应用程序中的成员身份一样。

我做什么

创建用于人员管理的应用程序(NPi_Person):

  • 用“ FullName”,“ Phone”等字段定义 Person 内容类型。

在另一个应用程序中,例如新闻应用程序(NPi_News):

  • News 内容类型中定义一个字段 Person_Entity ,其数据类型为 Entity ,输入类型为基于查询的实体/项目选择器
  • 基于NPi_Person使用数据源 App 创建查询,以检索Content-Type Person (query_Person_from_NPi_Person)。
  • Person_Entity 字段的实体查询定义中,
  • 引用 query_Person_from_NPi_Person 和流(例如, Default )。

问题

NPi_News应用程序的字段 Person_Entity 的下拉列表包含了NPi_Person App的 Person 实体。问题在于人实体不持久。保存并重新打开表格后,字段 Person_Entity 仍然为空。

这是否意味着数据类型为 Entity 且输入类型为基于查询的实体/ item-picker 的字段的来源可能不是来自另一个App?

2 个答案:

答案 0 :(得分:1)

实体字段具有在将应用程序加载到缓存时验证的关系。每个应用程序都是独立的,因此关系仅在该应用程序内进行验证。

另一个应用程序的实体可能存在或可能不存在-这是您必须在运行时处理的。

因此,要存储这些内容,您必须使用字符串查询,然后在其他应用程序的cshtml中查找它们(或者您也可以使用从字符串键中查找它们的查询来执行此操作) 。它也非常快,但是您需要手动执行此操作,因为这超出了默认的数据模型。

答案 1 :(得分:0)

关于跨App的基于Person的信息的替代用例的一些想法:我最初的问题中的目标可以通过将DNN用户帐户视为此类Person来实现。在这种情况下,您可以使用 DnnUserProfile 数据源。 下拉查询字段输入类型可以获取用户的DisplayName作为“值”字段的值。它的内容在DNN(安全性..会员帐户..注册设置)中定义。我将其设置为 [FIRSTNAME] [LASTNAME] [[USERID]] 。此内容在编辑表单中有意义,同时USERID用于在运行时从App查询中查找用户信息。缺点是您必须使用DNN UI(URL链接[yourdomain] / ctl / profile / userid / [ID])编辑内容。