.net - 如何更改 Orchard 记录库

标签 .net asp.net asp.net-mvc content-management-system orchardcms

我在一个项目中工作,我们正在考虑使用 Orchard CMS .

但是,我们希望将 Web 服务用作某些内容项的数据源。我想我们必须更改存储库实现才能使这成为可能,但我不确定。

所以我的问题是:我的猜测是正确的,还是更复杂?那怎么办呢?

谢谢!

更新:
我看到 Orchard 的 IRepository 接口(interface)需要实现 LINQ 提供程序。在这种情况下这是不可能的,因为 Web 服务是通过 SOAP 提供的。

我将更好地进一步描述场景:

我们希望建立的网站必须使用网络服务来获取有关组织成员和单位的信息。我们想在网站上显示某个组织单位的成员。我们还想创建我们自己的内容类型“Event”,它应该与“Member”(来自 WS)具有 M:N 关系(参加者)。

最佳答案

您不必实现 IRepository 如果您不想将零件存储完全定向到其他地方。我目前在我的一个基于 Orchard 的项目中使用 WCF 服务,所以你的场景是相似的。

你可以这样做:

  • 将您的 Web 服务代理包装在一个实现 的类中依赖 ,因此您可以将其注入(inject)驱动程序/处理程序/ Controller 等。为了便于单元测试和模拟,您应该创建一个单独的接口(interface),例如。 IMyWebServiceWrapper : IDependency 然后实现。
  • 创建适当的内容部分和记录。在记录存储 仅限 从 WS 定位和获取数据所需的信息。在内容部分中创建所有必要的属性 - 它们将从 WS 加载。
  • 将您的类从第 1 点注入(inject)到适当的内容处理程序的构造函数中
  • 在内容处理程序构造函数中使用如下内容:
  • OnLoaded<MyPart>((ctx, part) => { part.MyProperty = myService.GetMyProperty(part.SomeIdToLookup); });
  • 我的部分 是你在 Orchard 那边的一部分。
  • 我的房产 是您的一些属性,将从 WS 加载。
  • 我的服务 是您包装的 WS 代理,作为构造函数参数传递。
  • 获取我的属性 是包装器中的一个方法,它调用 WS 并检索必要的数据。

  • 当然,您可以使用其他处理程序事件(如 OnInitialized、OnCreated、OnPublished 等)。您可以阅读有关内容处理程序的更多信息 here .

    我还建议获得 dev startup module来自 Codeplex 的快速开发。

    关于.net - 如何更改 Orchard 记录库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4727843/

    相关文章:

    C# 在委托(delegate)调用中等待

    c# - XmlSerializer 在 .net framework 和 .net core 上与属性的私有(private) getter 行为不同

    c# - 如何在 C# 中的 foreach 之后返回列表以查看

    asp.net-mvc - Azure 身份验证 .net MVC 超时设置

    c# - ActionFilter 中的 ViewData 集在母版页 MVC3 上变为空

    c# - C# 中的表单/类在编码时未在 Intellisense 中检测到

    c# - 多个等待与 Task.WaitAll - 等价?

    javascript - 获取 C# 中由 javascript 创建的隐藏字段

    c# - 与本地 BizTalk 服务器的混合连接

    c# - 是否可以使用 SolrNet 映射复杂类型