gpt4 book ai didi

c# - Orchard 项目模块出现错误 : No persister for: SomePartRecord

转载 作者:太空狗 更新时间:2023-10-29 20:55:32 25 4
gpt4 key购买 nike

我正在尝试在设置页面中显示的 Orchard 中创建一个简单的设置。我创建了一个模块,它将我的 ContentPart 添加到设置页面,并在数据库中正确创建了一个表,但每次呈现 cshtml 文件并访问记录的属性时,我都会不断收到以下 NHibernate 记录。

没有持久性:TekFlow.Contact.TekFlowEmailSettingsPartRecord。(TekFlow.Contact 是模块名称)

下面是我用来创建 Orchard 所需的 Record/Part/Handler/Driver 的所有代码。

 public class TekFlowEmailSettingsPartDriver : ContentPartDriver<TekFlowEmailSettingsPart>
{
public TekFlowEmailSettingsPartDriver()
{
T = NullLocalizer.Instance;
}

public Localizer T { get; set; }

protected override DriverResult Editor(TekFlowEmailSettingsPart part, dynamic shapeHelper)
{
return ContentShape("Parts_TekFlowEmailSettings_Edit",
() => shapeHelper.EditorTemplate(TemplateName: "Parts.TekFlowEmailSettings", Model: part, Prefix: Prefix)
);
}

protected override DriverResult Editor(TekFlowEmailSettingsPart part, Orchard.ContentManagement.IUpdateModel updater, dynamic shapeHelper)
{
bool success = updater.TryUpdateModel(part, Prefix, null, null);
return Editor(part, shapeHelper);
}
}

[UsedImplicitly]
public class TekFlowEmailSettingsPartHandler : ContentHandler
{
public TekFlowEmailSettingsPartHandler(IRepository<TekFlowEmailSettingsPartRecord> repository)
{
Filters.Add(new ActivatingFilter<TekFlowEmailSettingsPart>("Site"));
Filters.Add(StorageFilter.For(repository));
}
}

public class TekFlowEmailSettingsPartRecord : ContentPartRecord {
public virtual string SendToEmail { get; set; }
}

public class TekFlowEmailSettingsPart : ContentPart<TekFlowEmailSettingsPartRecord>
{
public string SendToEmail
{
get { return Record.SendToEmail; }
set { Record.SendToEmail = value; }
}
}

public class TekFlowEmailSettingsDataMigration : DataMigrationImpl
{
public int Create()
{
SchemaBuilder.CreateTable("TekFlowEmailSettingsPartRecord",
table => table
.ContentPartRecord()
.Column<string>("SendToEmail", c => c.WithDefault("SomeEmail@somedomain.com").WithLength(255))
);


ContentDefinitionManager.AlterPartDefinition(
typeof(TekFlowEmailSettingsPart).Name, cfg => cfg.Attachable());

return 1;
}
}

最佳答案

事实证明,如果您的 Part 和 Record 不在您的“Models”命名空间中,那么这在 orchard 中将不起作用。当我更改两个类的命名空间时,它起作用了。必须是 Orchard 所做的假设。

关于c# - Orchard 项目模块出现错误 : No persister for: SomePartRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4995785/

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