0

什么时候应该使用 CMS 中的字段,什么时候应该使用类属性和数据库字段?

我的场景:创建了一个包含字段使用(文本)和价格(双)的产品内容部分。然后我创建了一个内容类型产品并添加了该部分。

我还可以在模型中创建产品记录并添加产品表。还有一个带有驱动程序等的部分。乍一看,除了需要编程的选项 2 之外,我看不出有什么不同。

但是我确实遇到了一个问题:在选项 2 中,我可以使用存储库并以编程方式创建很多项目。在选项 1 中,我可以创建产品内容项,但无法填写产品部分的字段(没有错误,但字段仍然为空)

那么何时使用选项 1,何时使用选项 2?我对选项 1 的问题与该选项有关吗?

编辑:澄清选项1的问题

我创建了一个产品部分。在 productpart 中,我添加了小数字段 price,并且我添加了一个字段 Usage of product,它是一个文本字段。

在代码中,我有以下内容:

        dynamic item = _cm.New("Product");
        item.TitlePart.Title = "Mijn dummy product";
        item.BodyPart.Text = "Some dummy text for this product";
        item.ProductPart.Price.Value = new decimal(20.5);
        item.ProductPart.Usage.Value = "Some dummy usage of this product";
        _cm.Create(item);

运行代码后,使用正确的标题和正文创建产品,但使用和价格出现空。我还尝试了 item.As<> 方法。但这不会编译为 As,因为我没有创建具有该名称的对象。

4

2 回答 2

0

不同之处在于,只能通过投影查询字段,但更一般地,部件和字段用于不同的用途:部件是可重用的,而不是字段。例如,价格将成为任何产品的特征,因此它可能应该是部分属性。用法,我不知道,这听起来对你正在做的事情相当具体,作为一个领域可能会做得更好。

至于选项 1 的问题,如果没有看到您的代码,很难说,但很可能您做错了。

于 2012-11-19T02:29:57.567 回答
0

显然,在访问内容部分和字段之前必须先创建该项目。至少它对我有用。

请验证我的分析是否正确。如果是这样,我会将其标记为答案,以及 Bertrand 的答案。

代码现在如下所示:

    var item = _cm.New("Product");
    item.As<TitlePart>().Title = "Mijn dummy product";
    item.As<BodyPart>().Text = "Some dummy text for this product";

    //Create first before accessing the contentparts that are dynamic.
    _cm.Create(item);

    //And then access the product via dynamic object.
    dynamic dyn = item;
    item.ProductPart.Price.Value = new decimal(20.5);
    item.ProductPart.Usage.Value = "Some dummy usage of this product";
于 2012-11-19T07:57:25.093 回答