Bre*_*ias 5 data-binding nhibernate orchardcms
在Orchard中,模块开发人员如何能够了解"加入"的工作方式,特别是在加入核心部件和记录时?我见过的更好的帮助之一是在Orchard文档中,但这些示例都没有显示如何与现有或核心部分形成关系.作为我正在寻找的东西的一个例子,这里是一个从一个工作示例中获取的模块服务代码片段:
_contentManager
.Query<TaxonomyPart>()
.Join<RoutePartRecord>()
.Where(r => r.Title == name)
.List()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,自定义TaxonomyPart正在与核心连接RoutePartRecord.我已经调查了代码,我无法看到TaxononmyPart如何"加入"到RoutePartRecord.同样,从工作代码,这里是另一个片段驱动程序代码,它将自定义TagsPart与核心CommonPartRecord相关联:
List<string> tags = new List<string> { "hello", "there" };
IContentQuery<TagsPart, TagsPartRecord> query = _cms.Query<TagsPart, TagsPartRecord>();
query.Where(tpr => tpr.Tags.Any(t => tags.Contains(t.TagRecord.TagName)));
IEnumerable<TagsPart> parts =
query.Join<CommonPartRecord>()
.Where(cpr => cpr.Id != currentItemId)
.OrderByDescending(cpr => cpr.PublishedUtc)
.Slice(part.MaxItems);
Run Code Online (Sandbox Code Playgroud)
我想我可以从之前的任何一个如何形成我自己的查询的例子中学习.我这样做了:
List<string> tags = new List<string> { "hello", "there" };
IContentQuery<TagsPart, TagsPartRecord> query = _cms.Query<TagsPart, TagsPartRecord>();
query.Where(tpr => tpr.Tags.Any(t => tags.Contains(t.TagRecord.TagName)));
var stuff =
query.Join<ContainerPartRecord>()
.Where(ctrPartRecord => ctrPartRecord.ContentItemRecord.ContentType.Name == "Primary")
.List();
Run Code Online (Sandbox Code Playgroud)
我的代码的目的是将发现的内容项限制为仅限于特定容器(或博客)的内容项.当代码运行时,它在我的连接查询中引发了一个异常{"could not resolve property: ContentType of: Orchard.Core.Containers.Models.ContainerPartRecord"}.这导致了各种各样的问题:
CommonPartRecord填充的,但不是ContainerPartRecord?一般来说,我怎么知道哪些部分记录被填充,何时?models类,发现TagsPart和CommonPartRecord之间没有固有的关系.因此,除了查看示例代码之外,首先如何知道这样的连接是合法的还是可能的? TagsPart和ContainerPartRecord在任何情况下是否合法?哪一个?文档中似乎有一个关于这些想法和问题的漏洞,这使得编写模块变得困难.无论在这个主题上找到什么答案,我都很乐意汇编成文章或社区Orchard文档.
至于文档中的漏洞,好吧,但是当然。我们今天拥有的文档仅涵盖了该平台的一小部分。今天最好的参考是源代码。我们和社区其他成员都会高度赞赏您为此做出的任何贡献。如果您需要这方面的帮助,请告诉我。
| 归档时间: |
|
| 查看次数: |
3087 次 |
| 最近记录: |