.net Umbraco中的自定义自动增量字段

.net Umbraco中的自定义自动增量字段,.net,content-management-system,umbraco,.net,Content Management System,Umbraco,我使用了我的自编程CMS,但在翁布拉科是新的。我正在使用.net framework 4开发Umbraco 4.7,并希望创建一个类似这样的内容结构 MaleModels |--------------Model (Can be multiple) |----------- Model Id (Problem) |----------- Name |----------- DOB

我使用了我的自编程CMS,但在翁布拉科是新的。我正在使用.net framework 4开发Umbraco 4.7,并希望创建一个类似这样的内容结构

MaleModels |--------------Model (Can be multiple) |----------- Model Id (Problem) |----------- Name |----------- DOB |----------- etc... 男性模特 |--------------模型(可以是多个) |-----------型号Id(问题) |-----------名字 |-----------多巴哥 |-----------等等。。。 我需要为每个模型创建节点,并希望为每个模型分配一个唯一的模型Id,但找不到任何可用于自动增量字段的数据类型(就像我使用SQL编写自定义.net代码时所做的那样)。我知道我可以使用@pageId,但我希望模型Id从100开始,每个模型只增加一个增量

需要帮助…

为什么不创建具有数据库的“自定义用户控件”,您可以将第一列创建为自动增量,第二列创建为节点ID,完成后,请在
页面加载()
事件中将其添加到数据库中,确保检查节点ID是否存在,然后不插入记录

现在在Umbraco中创建为数据类型,然后使用为属性,当您创建节点时,用户控件将获得自动增量编号,用户控件将插入带有NodeId的记录,并将生成自动增量编号并显示在
页面中加载()

它会在每次页面加载时加热,所以您可以做的是,每次进入数据库时都需要检查NodeId是否存在(如果存在),然后不要插入,否则插入数据库,这样您就可以创建自动增量

您需要清楚地认识到,每次数据库运行时都会发热,请确保您需要从性能角度对其进行研究

如果你有进一步的问题,请告诉我

谢谢


Ankur

一个选项是,您可以在自定义库中处理Document.AfterPublish事件,该事件可以在创建后将自动增量值添加到“autoID”字段,然后再次保存/发布。您可能需要保留当前增量id值的计数器(例如在上面的“MaleModels”节点中),这样您就不必每次都查询所有模型来查找最高id


这里有一篇关于Umbraco事件的博文,可能有助于了解细节:

感谢您的回复,经过进一步分析,我有了一个想法。我是否应该创建另一个表ModelInformation[ModelId PK(自动增量)、ModelNodeId(来自cms_内容的FK)],如您所述,我可以使用Umbraco事件模型来执行此任务。是存储Umbraco节点的节点ID的cms_内容表。若是,那个么我可以使用Umbrao事件模型来获取“已创建的节点Id”,并将其存储在ModelInformation表中。下次每当遇到一个模型节点时,我将获取它的nodeId并从ModelInformation表中找到相应的ModelId。是的,您当然可以添加另一个表并以这种方式存储它。在Umbraco管理区查看该ID是否重要?您可能希望创建一个简单的UserControl数据类型,在管理区域的页面上显示ID。是的,在管理区域中显示模型ID,实际上是在标签中会很好。事实上,我发现了一个很好的项目,你也有什么可以分享的吗?这个umbraco.tv视频是一个很好的教程:Tim的博客a nibble也是一个很好的资源。