c# - 是否可以将 CategoryID 值分配给 CategoryInfo 对象?

标签 c# kentico

我一直在尝试使用以下代码块添加新类别:

CategoryInfo category = new CategoryInfo()
{
    CategoryID = 999, // manually set
    CategoryName = "TestCategory",
    CategoryDisplayName = "Test Category",
    CategoryEnabled = true,
    CategorySiteID = 1
};

CategoryInfoProvider.SetCategoryInfo(category);

这不会引发任何错误,但不会将新类别添加到 CMS_Category 表。

但是,如果我删除了这一行:CategoryID = 999,,该类别将保存到系统中并自动分配 CategoryID。

我想手动设置这个字段。任何帮助表示赞赏。 (我试图避免创建额外的字段来处理这个问题)

最佳答案

Kentico 根据是否设置了主键来决定是否保存或更新一个对象。因此,如果设置了 CategoryID,系统实际上会调用 UPDATE CMS_Category SET ... WHERE CategoryID = @CategoryID 而不是 INSERT INTO .../p>

如果您需要存储原始引用(我猜您正在尝试存储外部标识符以用于集成目的),我建议将其存储在单独的字段中。为了防止修改系统字段,我将使用代号字段 - CategoryName

尽管@martin 的建议似乎是个好主意,但我很确定它不会起作用,因为 Kentico 会丢失对当前正在更新的对象的引用。如果您拥有有效的源代码许可证,请查看 CategoryInfoProvider.SetCategoryInfoInternal() 以了解我在说什么。

关于c# - 是否可以将 CategoryID 值分配给 CategoryInfo 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34991250/

相关文章:

c# - 在单独的线程上运行自己的类

c# OCR 无法识别数字(tesseract 2)

c# - "if"语句的不同写法

c# - 以编程方式创建文档 Kentico 9

css - Kentico CMSListMenu 为每一行设置样式

c# - 无法定义静态抽象字符串属性

c# - 如何控制冒号(:) URL Query String?

Kentico v9 可折叠面板 header 类问题

html - 无法渲染 svg 图像